【发布时间】:2013-11-06 00:38:17
【问题描述】:
我有一本字典,其中包含不同数量项目的值列表。 我想将此字典 (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 = [k for k in dict2 if k in dict]
【问题讨论】:
-
如果您使用 Python 2.x,请使用
iteritems而不是items。 -
这真的会影响速度吗?
-
dict.items返回将项目复制为列表,而dict.iteritems返回一个迭代器;dict.iteritems内存效率更高。 -
您能否提供一个输入-输出示例,以便我们轻松帮助您?
-
使用 dict.items 仍然需要几个小时。它可能在我的代码的上游,但那部分只是制作字典
标签: python list dictionary list-comprehension