将list1设为集合并使用dictionary views,并使用列表推导:
set1 = set(list1)
newlist = [key for key, value in dict_a.iteritems() if value.viewkeys() & set1]
在Python 3中,请改用value.keys()和dict_a.items.
这将测试字典键和您要查找的键集之间是否存在相交(有效操作).
演示:
>>> dict_a = {'one': {'bird':2, 'tree':6, 'sky':1, 'TOTAL':9},
... 'two': {'apple':3, 'sky':1, 'TOTAL':4},
... 'three': {'tree':6, 'TOTAL':6},
... 'four': {'nada':1, 'TOTAL':1},
... 'five': {'orange':2, 'bird':3, 'TOTAL':5}
... }
>>> set1 = {'bird','tree'}
>>> [key for key, value in dict_a.iteritems() if value.viewkeys() & set1]
['three', 'five', 'one']
请注意,字典顺序是任意的(取决于所使用的键以及字典的插入和删除历史记录),因此输出列表顺序可能会有所不同.
从技术上讲,您也可以直接使用列表(value.viewkeys()和list1起作用),但是将其设置为集合可以更清楚地说明您的意图.
版权声明:本文为weixin_39633774原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。