我正在尝试提取defaultdict值中当前还存在的键。
例如,
a = {1: [1,3,5], 2: [1,3], 3: [3], 4:[5]}
应该提供1
和3
,因为这些值在值中-即1
在1,3,5
我写了这段代码,但它没有打印重复的密钥:
c = set():
for k, v in a.items():
if a[k] == v
c.add(k)
但是它不起作用,我认为是因为它不比较列表中的每个单独项目,即1: [1,3,5]
如何解决?
答案 0 :(得分:2)
您快到了;您只需要稍微修改一下条件即可:
a = {1: [1,3,5], 2: [1,3], 3: [3], 4:[5]}
c = set()
for k, v in a.items():
if k in v:
c.add(k)
这可以简化为设定的理解:
a = {1: [1,3,5], 2: [1,3], 3: [3], 4:[5]}
c = {k for k, v in a.items() if k in v}
答案 1 :(得分:0)
您可以使用嵌套的集合理解,该集合迭代在dict值的子列表上并输出作为dict的键的列表项:
{k for l in a.values() for k in l if k in a}
这将返回:
{1, 3}