繁体   English   中英

将列表与Dict比较-如果值与列表匹配,则返回键

[英]Comparing List against Dict - return key if value matches list

这是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我该如何返回Bob, Carly, Freddy (这些键),而不是返回匹配的值

请注意,问题中的这段代码没有按照您的想象做:

for item in champ_dict.items() and champ_ids:

上述检查item是在字典和邮件列表(这不是如何inand在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()

首先,您需要在字典中将字符串作为键

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM