修改:TL; DR
我所拥有的:
dict_1 = {'file1': {'word1': 5, 'word2: 3'}, 'file2': {'word1': 12, 'word2: 0'}}
dict_2 = {'file1': {'total_words': 11}, 'file2': {'total_words': 18}}
我想要的
concat_dict = {'file1': {'word1': 5, 'word2: 3', 'total_words' : 11}, 'file2': {'word1': 12, 'word2: 0', 'total_words' : 18}}
已将dict_2
中的关联值添加到dict_1
中的公用密钥中。
我有一本字典,它由文本文件名和这些文件中特定单词的字数组成。
原始帖子
除了每个文件中的特定单词外,我还希望对每个文件中的单词总数(每个键的值)进行计数?
我的代码:
# dict_one = previously defined
# filter_words = previously defined
out={}
for k, v in dict_one.items():
#create empty list
new = []
#for each filter word
for i in filter_words:
new.extend(re.findall(r"{}".format(i),v) )
out[k] = dict(Counter(new))
# count total number of words
total_dict = {k: len(v) for k,v in dict_one.items()}
基本上,我想将total_dict {}和out {}字典连接起来,因为它们具有相同的键,但是我不确定如何。
也:我已经有一段时间没有经过这段代码了,但是我忘记了这个表达式的作用:
new.extend(re.findall(r"{}".format(i),v) )
我知道它正在扩展列表,但是我对re.findall的参数感到困惑:
r"{}".format(i),v)
这是什么意思?
答案 0 :(得分:1)
您可以使用字典理解和this answer中描述的方法来合并内部字典:
dict_1 = {'file1': {'word1': 5, 'word2': '3'}, 'file2': {'word1': 12, 'word2': '0'}}
dict_2 = {'file1': {'total_words': 11}, 'file2': {'total_words': 18}}
concat_dict = {k:{**dict_1[k], **dict_2[k]} for k in dict_1}
concat_dict
输出:
{'file1': {'word1': 5, 'word2': '3', 'total_words': 11},
'file2': {'word1': 12, 'word2': '0', 'total_words': 18}}