我有一个包含不同数量项目值的列表的字典。 我想比较这个词典(dict1)的值与另一个(dict2)的键值,如果它们匹配,则打印dict1的匹配组件的键和值以及dict2的值。 这两个字典都很大,目前这个过程太长了,你可以从这个基本的脚本中猜到。将一个字典的键与一个值列表比较一个字典到另一个字典
dict1 = {boys:[tom,jon],girls:[suzy]}
dict2 = {suzy:paper-stapler-extraordinaire,jon:paper-shredderoligist,tom:garbage-specialist}
输出:
boys \t tom \t garbage-specialist
boys \t jon \t paper-shredderoligist etc.....
for k,v in dict2.items():
for key,value in dict1.items():
if k in value[0]:
print str(key)+"\t"+str(value[0])+"\t"+v
if len(value)>1:
if k in value[1]:
print str(key)+"\t"+str(value[0])+"\t"+v
可能有人提出了更大的内存有效的方法?也许是一个列表理解? 这一直没有工作...... A = [在dict2 k代表k如果K的字典]
如果您使用Python 2.x,请使用'iteritems'而不是'items'。 – falsetru
速度真的会有所作为吗? – Vince
['dict.items'](http://docs.python.org/2/library/stdtypes#dict.items)将项目作为列表复制,而['dict.iteritems'](http:// docs .python.org/2/library/stdtypes#dict.iteritems)返回一个迭代器; 'dict.iteritems'更具记忆效率。 – falsetru