这是Python 3.6
我需要帮助将列表与字典进行比较,如果匹配,我需要返回字典键。
champ_ids = [0, 36, 85]
champ_dict = {Bob : 0, Carly: 36, Freddy : 85, Megan : 14, Dilbert : 69}
for item in champ_dict.items() and champ_ids:
print(item)
打印所有匹配的数字,所以在这种情况下0, 36, 85
这是完美的。如果在两个地方都找到这些值,我如何让它返回Bob, Carly, Freddy
(键),而不是返回匹配的值
答案 0 :(得分:2)
请注意,问题中的此代码不执行您想象的操作:
for item in champ_dict.items() and champ_ids:
以上不检查item
是否在字典和列表中(不是in
,and
在Python中的工作方式!) 。它只是迭代champ_ids
列表,仅此而已。试试这个:
champ_ids = [0, 36, 85]
champ_dict = {'Bob' : 0, 'Carly': 36, 'Freddy' : 85, 'Megan' : 14, 'Dilbert' : 69}
[k for k, v in champ_dict.items() if v in champ_ids]
上面将比较字典中的每个值,如果它出现在列表中,它会将相应的键添加到输出列表中。例如,这是问题中测试数据的输出:
['Freddy', 'Bob', 'Carly']
现在您可以根据需要使用它,print()
如果您愿意,可以使用它。
答案 1 :(得分:0)
首先,您需要在字典中将字符串作为键
{"Bob" : 0, "Carly" : 36, "Freddy" : 85, "Megan" : 14, "Dilbert" : 69}
另外,为什么不使用id作为键而不是名称, 那会更好一点
但这是代码:
for k, v in champ_dict.items():
if v in champ_ids:
print(k)