Dictionary keys match on list; get key/value pair

后端 未结 6 2228
栀梦
栀梦 2021-02-12 14:55

In python... I have a list of elements \'my_list\', and a dictionary \'my_dict\' where some keys match in \'my_list\'.

I would like to search the dictionary and retrieve

相关标签:
6条回答
  • 2021-02-12 15:35
     new_dict = dict((k, v) for k, v in dict.iteritems() if k in list)
    

    Turning list into a set set(list) may yield a noticeable speed increase

    0 讨论(0)
  • 2021-02-12 15:43

    Don't use dict and list as variable names. They shadow the built-in functions. Assuming list l and dictionary d:

    kv = [(k, d[k]) for k in l if k in d]
    
    0 讨论(0)
  • 2021-02-12 15:45

    Here is a one line solution for that

    {i:my_dict[i] for i in set(my_dict.keys()).intersection(set(my_list))}
    
    0 讨论(0)
  • 2021-02-12 15:48

    What about print([kv for kv in dict.items() if kv[0] in list])

    0 讨论(0)
  • 2021-02-12 15:54

    (I renamed list to my_list and dict to my_dict to avoid the conflict with the type names.)

    For better performance, you should iterate over the list and check for membership in the dictionary:

    for k in my_list:
        if k in my_dict:
            print k, my_dict[k]
    

    If you want to create a new dictionary from these key-value pairs, use

    new_dict = {k: my_dict[k] for k in my_list if k in my_dict}
    
    0 讨论(0)
  • 2021-02-12 15:56

    Try This:

    mydict = {'one': 1, 'two': 2, 'three': 3}
    mykeys = ['three', 'one','ten']
    newList={k:mydict[k] for k in mykeys if k in mydict}
    print newList
    {'three': 3, 'one': 1}
    
    0 讨论(0)
提交回复
热议问题