gpt4 book ai didi

python - 使用值列表将一个字典的键与另一个字典进行比较

转载 作者:行者123 更新时间:2023-11-28 22:53:16 25 4
gpt4 key购买 nike

我有一本字典,其中包含不同数量项目的值列表。我想将这个字典 (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]

最佳答案

for dict1_key, dict1_values in dict1.iteritems():
for dict1_value in dict1_values:
try:
dict2_value = dict2[dict1_value]
print str(dict1_key) + '\t' + str(dict1_value) + '\t' + str(dict2_value)
except KeyError:
pass

它结合了一些技术来加速它并使用更少的内存。 iteritems 使用更少的内存(正如其他人所提到的)。通过使用try,然后使用dict2[dict1_value],可以保证dict2只被搜索一次,然后用hash算法,应该比遍历所有元素快得多。对于 dict2 中没有 dict1_value 的所有情况,try 下的第一个语句失败,导致 catch block 无害地 通过

关于python - 使用值列表将一个字典的键与另一个字典进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com