如何使用sorted函数处理整数投票结果列表按字母序输出政党得票
问题原因
你当前的代码存在两处需要调整的逻辑:
- 初始输入逻辑冗余:你在进入循环前先调用了一次
input()获取第一个政党名称,进入循环后又立刻调用了一次input()覆盖了之前的值,会导致第一个输入的政党名称没有被统计。 - 遍历字典未排序:Python中直接遍历字典默认按插入顺序输出(3.7及以上版本),不会自动按字母序排列,需要调用
sorted()函数对字典的键做排序后再遍历。
修改后的完整代码
parties = {} print("Independent Electoral Commission") print("--------------------------------") print("Enter the names of parties (terminated by DONE):") while True: string1 = input() if string1 == 'DONE': break if string1 not in parties: parties[string1] = 1 else: parties[string1] += 1 print("") print("Vote counts:") # 对字典的键按字母顺序排序后遍历 for key in sorted(parties): value = parties[key] print("{: <10}".format(key), "-", value)
核心修改点说明
- 删掉了循环外多余的
input()调用,避免第一个输入的政党被丢弃 - 把遍历语句
for key in parties:修改为for key in sorted(parties):,sorted()默认会对字符串按字母升序排序,即可实现预期的输出效果。
内容的提问来源于stack exchange,提问作者Josh Penne
相关产品推荐
相关产品推荐

