python-3.x - 合并字典和计数器对象

标签 python-3.x

Bellow 是我尝试将 Dictionary 与具有默认零值的类别合并的代码,Counter 对象具有两个或多个具有 Dictionary 类别的字典,但是,并非所有都存在于其中。结果将给出一个包含两个或更多字典的列表,具体取决于 Counter 对象中字典的数量。如果字典键等于第一个计数器对象字典键,则值将被替换,依此类推。

Result = []
        for data in CounterList:
            for kd, vd in Dictionary:

                for kc, vc in data.items():
                    if kd == kc:
                        Dictionary.update({key: valueIn})

                Result.append(Dictionary)
        print("Result", Result)

计数器列表:

[计数器({'A':10,'B':15,'C':5,'E':8}),计数器({'A':15,'D':5 , 'F': 20,'G': 20})]

字典:

{'A':0,'B':0,'C':0,'D':0,'E':0,'F':0,'G':0}

结果:

[{'A':10,'B':15,'C':5,'D':0,'E':8,'F':0,'G':0} ,{'A':15,'B':0,'C':0,'D':5,'E':0,'F':20,'G':20}]

最佳答案

你可以在你的反对象上使用一个循环,并对你的模板结果进行一些深度复制:

from collections import Counter
import copy

counts = [Counter({'A': 10, 'B': 15, 'C': 5,'E': 8}), 
          Counter({'A': 15, 'D': 5, 'F': 20,'G': 20})]

d_template = {'A':0,'B':0,'C':0,'D':0,'E':0,'F':0,'G':0} 

result = []

for c in counts:
    # deep copy your template 
    result.append(copy.deepcopy(d_template))
    # and update it to the current counter data
    result[-1].update(c)


print(result)

输出:

[{'A': 10, 'B': 15, 'C': 5, 'D': 0, 'E': 8, 'F': 0,  'G': 0}, 
 {'A': 15, 'B': 0,  'C': 0, 'D': 5, 'E': 0, 'F': 20, 'G': 20}]

关于python-3.x - 合并字典和计数器对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61168036/

相关文章:

python - 如何将 timedelta 微秒格式化为 2 位小数?

python - 用openai图表txt文件编码到midi转换器

python - 如何使用 pytube 从 Youtube 播放列表下载中间视频

python - 在字符串输入中使用数字,Python 3

python - 在 Python 中确定一个对象是否是类似字节的对象的正确方法是什么?

python - 使用 python 和 bs4 抓取后的不同数据

python - python 3 中缺少 argparse

python-3.x - 来自字符串的 Python3 Scapy 自定义负载

python-3.x - Python Regex 查找给定字符串是否遵循交替元音、辅音或辅音、元音的连续模式

python - 去掉列表中的逗号