找到一个';它不在Python字典中的值列表中吗?(初学者)
所以我要做的是,如果我有一个字典,它的值是列表,我必须找到并打印唯一键或唯一值: 例如: 我想找到的是找到一个';它不在Python字典中的值列表中吗?(初学者),python,dictionary,Python,Dictionary,所以我要做的是,如果我有一个字典,它的值是列表,我必须找到并打印唯一键或唯一值: 例如: 我想找到的是 哪些键不作为值存在并打印它们(这将导致鼠标),以及 哪些值不作为键存在(这将导致fish、fly、horse、rat、bird) 然后将所述结果存储在新列表中 我尝试的是: new_list = [] for i in my_dict.keys(): if i not in my_dict.values(): new_list = my_dict.values(i) 或者
new_list = []
for i in my_dict.keys():
if i not in my_dict.values():
new_list = my_dict.values(i)
或者类似于这些的东西您可以轻松有效地使用集合:
>>> my_dict = {'dog': ['cat', 'rat', 'bird'], 'cat': ['dog', 'bird', 'rat'], 'mouse': ['fish', 'fly', 'horse']}
>>> values = {value for l in my_dict.values() for value in l}
>>> keys = set(my_dict)
>>> values - keys
set(['fly', 'horse', 'fish', 'rat', 'bird'])
>>> keys - values
set(['mouse'])
首先,您可以使用以下工具展平所有价值观: 或采用其他方法:
>>> values = [lst for item in my_dict.values() for lst in item]
>>> print(values)
['cat', 'rat', 'bird', 'dog', 'bird', 'rat', 'fish', 'fly', 'horse']
>>> values = sum(my_dict.values(), [])
>>> print(values)
['cat', 'rat', 'bird', 'dog', 'bird', 'rat', 'fish', 'fly', 'horse']
然后可以提取不作为值存在的键和不作为键存在的值:
>>> only_keys = [key for key in my_dict if key not in values]
>>> print(only_keys)
['mouse']
>>> only_values = [value for value in values if value not in my_dict]
>>> print(list(set(only_values)))
>>> ['rat', 'bird', 'fish', 'fly', 'horse']
注意:您必须仅对值应用,因为值可以在字典中重复,而键不能 输入数据:
my_dict = {"dog": ["cat","rat","bird"],
"cat": ["dog","bird","rat"],
"mouse": ["fish","fly","horse"]}
在关键帧中创建一组所有动物:
animals_keys = set(my_dict.keys())
创建一组值中的所有动物:
animals_values = set()
for values in my_dict.values():
animals_values.update(values)
animal_keys - animal_values
检查键中的动物,但不检查值中的动物:
animals_values = set()
for values in my_dict.values():
animals_values.update(values)
animal_keys - animal_values
[“鼠标”]
另一方面,动物在值中而不是键中:
animal_values - animal_keys
[‘飞’、‘鼠’、‘鱼’、‘鸟’、‘马’]
这是Python3。
我尝试了很多方法
请将这些方法包括在问题中。噢,欢迎来到Stack Overflow!您确定第2点中所述的预期结果有效吗?您是否缩短了示例,使其不再适用?我把老鼠、鸟、鱼、苍蝇和马看作是没有相应键的值。还有,键和值应该是字符串吗?在这种情况下,您应该引用它们。您的代码在最后一行中包含一个bug。这就是每次为new\u list
变量分配一个新列表,而您更希望扩展现有的列表。