某公司现需要统计员工出勤次数,具体要求如下: 输入样例: Mark Tom Ivor Mark Ivor Mark Jack end 输入样例解释: 每行表示某天出勤的员工名单,以空格间隔。 end表示输入结束 输出样例: Mark 3 Ivor 2 Tom 1 Jack 1 输出样例解释: 按出勤天数倒序输出,若出勤次数相同则按输入顺序输出(即先输入的先输出,样例中Tom比Jack先输入,因此先输出Tom)。每名员工占一行,格式为员工名+空格+出勤次数
时间: 2024-03-19 18:45:33 浏览: 53
这道题目可以使用字典来解决,遍历每一行输入的员工名单,统计每个员工出现的次数,最后按照出勤次数倒序并按输入顺序输出即可。
以下是Python代码实现:
```python
attendance = {} # 员工出勤次数字典
while True:
names = input().split() # 输入员工名单
if names[0] == 'end':
break
for name in names:
attendance[name] = attendance.get(name, 0) + 1 # 统计员工出勤次数
# 按照出勤次数倒序排序并输出结果
for name, count in sorted(attendance.items(), key=lambda x: (-x[1], list(input().split()).index(x[0]))):
print(name, count)
```
在输入时,我们使用 `input().split()` 来将一行输入按照空格分割成一个员工名单列表,然后遍历每个员工名字,使用字典的 `get` 方法来统计该员工出现的次数,并将其存储到 `attendance` 字典中。
在输出时,我们使用 Python 内置函数 `sorted`,并根据字典值(即出勤次数)进行倒序排序。由于当出勤次数相同时要按照输入顺序输出,因此我们需要在排序时传入一个 `key` 函数,该函数返回一个元组,第一个元素是员工名字,第二个元素是员工名字在输入中的位置,这样就能保证当出勤次数相同的员工时,优先按照输入顺序输出。