找到一个';它不在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) 或者

所以我要做的是,如果我有一个字典,它的值是列表,我必须找到并打印唯一键或唯一值: 例如:

我想找到的是

  • 哪些键不作为值存在并打印它们(这将导致鼠标),以及

  • 哪些值不作为键存在(这将导致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) 
    

    或者类似于这些的东西

    您可以轻松有效地使用集合:

    >>> 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
    变量分配一个新列表,而您更希望扩展现有的列表。