我认为你问题的本质是你重新设置
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()
如果你想按字母顺序打印你的作品集。