私信  •  关注

Dan H

Dan H 最近创建的主题
Dan H 最近回复了
5 年前
回复了 Dan H 创建的主题 » 在python上查找同一字典中键和值之间的差异

我认为你问题的本质是你重新设置 flag=True 每次循环迭代时。在这种代码结构中,您找不到“不在任何值中的键”,而是找到“至少一个值中缺少的键”。由于至少有一个值缺少每个键,因此函数将返回所有键。

一种方法是使用Python的内置 set()

d1 = {"A": ["J"], "B": ["A"], "C": ["A", "D", "J"], "D": ["A", "J"]}

set_of_keys = set(d1.keys())

set_of_values = set()
for vals in d1.values():
    set_of_values.update(vals)

print(set_of_keys)
print(set_of_values)

values_that_arent_keys = set_of_values - set_of_keys
print(values_that_arent_keys)

keys_that_arent_values = set_of_keys - set_of_values
print(keys_that_arent_values)

给予:

{'D', 'C', 'B', 'A'}
{'J', 'D', 'A'}
{'J'}
{'C', 'B'}

你可以用 sorted() 如果你想按字母顺序打印你的作品集。