首页 > 解决方案 > 如何连接字典的键和值

问题描述

你的团队要去露营,你正在投票决定晚餐打包什么食物。

每个人都获得一票,获得至少一半以上票数的食品获胜。如果没有任何一项获得至少半数以上的选票,则任何项目都不会获胜。假设每个人只获得一票。

输入将包含一个食品列表,其中每出现一个项目代表一票。您应该打印获胜的食品作为输出。如果没有明确的获胜者,请打印“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)

标签: pythonpython-3.x

解决方案


我结合了这两个函数并稍微修复了代码:

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")

推荐阅读