比较字典的键

时间:2017-07-02 15:04:45

标签: python

我在python中有一个字典列表(L1)和一个字典(D1):

L1 = [{'date': u'2017-06-14 18:46:40', 'value': u'148.01', 'id': u'8430'}, {'date': u'2017-06-14 18:46:40', 'value': u'133.03', 'id': u'681'}, {'date': u'2017-06-14 18:46:40', 'value': u'62.55', 'id': u'6151'}, {'date': u'2017-06-14 18:46:40', 'value': u'100.29', 'id': u'2089'}]

D1 = {u'7925': [u'538'], u'7927': [u'3819', u'7307'], u'8480': [u'1772', u'1772'], u'8481': [u'4384'], u'8482': [u'4725']}

如何将D1中的键与L1中的id进行比较 我需要访问D1中的列表

像:

for item in L1:
  if item['id'] in D1:
   print 'list: ',  D1[item['id']
   D1LST =  D1[item['id']]
   for d in D1LST:
     Do something

我的打印声明显示空白

3 个答案:

答案 0 :(得分:0)

也许这会有所帮助:

[y for x,y in D1.iteritems() for item in L1 if x in item['id']]

如果输入:

L1 = [{'date': u'2017-06-14 18:46:40', 'value': u'148.01', 'id': u'8430'}, {'date': u'2017-06-14 18:46:40', 'value': u'133.03', 'id': u'681'}, {'date': u'2017-06-14 18:46:40', 'value': u'62.55', 'id': u'6151'}, {'date': u'2017-06-14 18:46:40', 'value': u'100.29', 'id': u'2089'}]

D1 = {u'8430': [u'538'], u'7927': [u'3819', u'7307'], u'8480': [u'1772', u'1772'], u'8481': [u'4384'], u'8482': [u'4725']}

输出:

[[u'538']]

答案 1 :(得分:0)

从L1获取ID然后迭代D1以找到匹配

ids = [d['id'] for d in L1]

for k in D1.keys(): 
  if(k in ids):
    # Whatever happens when there is a match

答案 2 :(得分:0)

我认为这就是你要找的东西。迭代L1的每个元素,如果元素idD1中的键,则执行某些操作。

for element in L1:
    key = element['id']
    if key in D1:
        # Do Other Computations
        print D1[key]

之所以没有打印是因为idL1中不存在D1

L1中的ID列表:[u'8430', u'681', u'6151', u'2089']

D1中的键列表:[u'8480', u'7927', u'8482', u'7925', u'8481']

如你所见,它们都不匹配。所以你的输出是空的是有意义的。