How to compare list values with dictionary keys and make a new dictionary of it using python

后端 未结 2 449
我寻月下人不归
我寻月下人不归 2020-12-17 01:23

I have a list like this:

lis = [\'Date\', \'Product\', \'Price\']

I want to compare it with:

dict = {\'Date\' : \'2013-05-0         


        
2条回答
  •  离开以前
    2020-12-17 01:55

    Treat lis as a set instead, so you can use dictionary views and an intersection:

    # python 2.7:
    n = {k: d[k] for k in d.viewkeys() & set(lis)}
    
    # python 3:
    n = {k: d[k] for k in d.keys() & set(lis)}
    

    Or you could use a simple dict comprehension with a in test against d:

    # python 2.6 or older:
    n = dict((k, d[k]) for k in lis if k in d)
    
    # python 2.7 and up:
    n = {k: d[k] for k in lis if k in d}
    

    This presumes that not all values in lis are going to be in d; the if k in d test can be dropped if they are always going to be present.

    For your specific case, the second form is quite a lot faster:

    >>> from timeit import timeit
    >>> timeit("{k: d[k] for k in d.viewkeys() & s}", 'from __main__ import d, lis; s=set(lis)')
    2.156520128250122
    >>> timeit("{k: d[k] for k in lis if k in d}", 'from __main__ import d, lis')
    0.9401540756225586
    

提交回复
热议问题