gpt4 book ai didi

python - 更新字典

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:17 25 4
gpt4 key购买 nike

我创建了三个词典-dict1、dict2 和dict2。我想先用 dict2 更新 dict1,然后用 dict3 更新生成的字典。我不确定他们为什么不加起来。

def wordcount_directory(directory):
dict = {}
filelist=[os.path.join(directory,f) for f in os.listdir(directory)]
dicts=[wordcount_file(file) for file in filelist]
dict1=dicts[0]
dict2=dicts[1]
dict3=dicts[2]
for k,v in dict1.iteritems():
if k in dict2.keys():
dict1[k]+=1
else:
dict1[k]=v
for k1,v1 in dict1.iteritems():
if k1 in dict3.keys():
dict1[k1]+=1
else:
dict1[k1]=v1
return dict1

print wordcount_directory("C:\\Users\\Phil2040\\Desktop\\Word_count")

最佳答案

也许我没有理解你的问题,但你是否试图将每个词典中的所有值加在一起到一个最终的词典中?如果是这样:

dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {'b': 5, 'c': 1, 'd': 9}
dict3 = {'d': 1, 'e': 7}

def add_dict(to_dict, from_dict):
for key, value in from_dict.iteritems():
to_dict[key] = to_dict.get(key, 0) + value

result = dict(dict1)
add_dict(result, dict2)
add_dict(result, dict3)
print result

这会产生:{'a': 1, 'c': 4, 'b': 7, 'e': 7, 'd': 10}

发布您的问题的预期结果会非常有帮助。

编辑:

对于任意数量的字典:

result = dict(dicts[0])
for dict_sum in dicts[1:]:
add_dict(result, dict_sum)
print(result)

如果您真的想按照以下格式修复原始问题中的代码:

  1. 当您应该执行 dict1[k]+=dict2.get(k, 0) 时,您正在使用 dict1[k]+=1
  2. get 的引入消除了使用 if 语句检查它是否存在的需要。
  3. 您需要遍历 dict2dict3 以将它们中的新键引入 dict1
  4. (不是什么大问题,但值得一提)if语句中检查key是否在字典中,建议简单操作到if k in dict2:(见this post了解更多详情)

借助@DisplacedAussie 发现的惊人内置库,答案可以进一步简化:

from collections import Counter

print(Counter(dict1) + Counter(dict2) + Counter(dict3))

结果产生:Counter({'d': 10, 'b': 7, 'e': 7, 'c': 4, 'a': 1})

Counter 对象是 dict 的子类,因此可以像标准 dict 一样使用它。

关于python - 更新字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184208/

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