python - 如何连接字典的键和值
问题描述
你的团队要去露营,你正在投票决定晚餐打包什么食物。
每个人都获得一票,获得至少一半以上票数的食品获胜。如果没有任何一项获得至少半数以上的选票,则任何项目都不会获胜。假设每个人只获得一票。
输入将包含一个食品列表,其中每出现一个项目代表一票。您应该打印获胜的食品作为输出。如果没有明确的获胜者,请打印“NOTA”。
Input1: {'a','b','a','a','b','b'} output1: NOTA Input2: {'a','b','a','a','b','b','b'} output2: b
我已经编写了代码,它给了我重复值的计数。
import ast,sys
input_str = sys.stdin.read()
votes = ast.literal_eval(input_str)
d = {}
for i in votes:
if i not in d:
d[i]=1
else:
d[i] = d[i]+1
上面的代码给了我所有重复值的计数,例如它返回的 Input1dict_values[3,3]
但我想在字典中将键和值连接在一起。例如:{'a': 3, 'b':3}
这样我就可以使用下面的代码。
vals = list(d.values())
for value in vals:
if value[0]==value[1]:
print('NOTA')
else:
if value[0] > value[1]:
print(max(d.key()) (something like this)
解决方案
我结合了这两个函数并稍微修复了代码:
import ast,sys
input_str = sys.stdin.readline()
votes = ast.literal_eval(input_str)
num_of_votes = len(votes)
d = {}
for i in votes:
if i not in d:
d[i]=1
else:
d[i] = d[i]+1
vals = d
winner=False
for value in vals:
if vals[value]>num_of_votes//2:
print(value)
winner=True
break
if not winner:
print("NOTA")
推荐阅读
- python - 如何在 Google Cloud Shell 中安装 Python?
- bash - 管道 bzip2 输出到 tdbloader2 (apache-jena) 给出“文件不存在”
- java - 来自仅包含数字的字符串的 JAVA 最大值
- environment-variables - Dymola mos 脚本环境变量
- go - 执行 .go 文件时出错。即使安装了 go 也无法识别
- django - 如何使用通道 websocket 在 Django 中定位 websocketbridge.js?
- android - 如何在 RecyclerView 中添加刷新滑动
- python - DJANGO:如何对我的查询执行 AND 操作?
- javascript - JavaScript:未捕获的 RangeError
- php - 使用 preg_match 检查多个变量