将两个字典用相同的键连接起来?

时间:2019-09-05 00:24:29

标签: python python-3.x dictionary concatenation

修改: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)

这是什么意思?

1 个答案:

答案 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}}