python-3.x - 循环思想字典元素并在相似键上组合(也添加)
问题描述
我会有多个“key1”和“key2”,我可以有 20 个或更多。
my_dict = {"key1": [{"A": 0}, {"B": 1}, {"C": 0}, {"D": 0},
{"A": 0}, {"B": 0}, {"C": 0}, {"D": 0},
{"A": 0}, {"B": 1}, {"C": 0}, {"D": 0}],
"key2": [{"A": 0}, {"B": 0}, {"C": 0}, {"D": 0},
{"A": 1}, {"B": 0}, {"C": 0}, {"D": 0},
{"A": 0}, {"B": 0}, {"C": 0}, {"D": 0},
{"A": 1}, {"B": 0}, {"C": 0}, {"D": 0},
{"A": 0}, {"B": 0}, {"C": 0}, {"D": 0}],
"key+:"..etc..}
我的最终输出如下:
new_dict = {"key1": [{"A": 0}, {"B": 2}, {"C": 0}, {"D": 0}],
"key2": [{"A": 2}, {"B": 0}, {"C": 0}, {"D": 0}]}
我试过了:
new_dict = defaultdict(int)
f_dict = {}
for org in my_dict.keys():
f_dict[str(org)] = []
for key, dict_list in my_dict.items():
for d in dict_list:
for k, v in d.items():
new_dict[k] += v
f_dict[str(org)].append(dict(new_dict))
解决方案
这有几个层次:
外层:具有两个唯一键的字典每个字典都包含一个较小字典
的列表(我称之为)dict_list
from collections import defaultdict
# initialize a new default dictionary
# this allows you to initialize each new key with a value of zero
new_dict = defaultdict(int)
for key, dict_list in my_dict.items():
for d in dict_list:
for k, v in d.items():
new_dict[k] += v
编辑1:
我不明白这个问题。看起来您想保留外部字典的键。
from collections import defaultdict
new_dict = {}
for key, dict_list in my_dict.items():
new_dict[key] = defaultdict(int)
for d in dict_list:
for k, v in d.items():
new_dict[key][k] += v
这将以以下格式输出 new_dict:
new_dict = {'key1': {'A': 0, 'B': 2...} 'key2': {...}}
如果你希望 key1 和 key2 包含一个字典列表,在前面的代码之后,你可以添加:
for key, d in new_dict.items():
l = []
for k, v in d.items():
l.append({k: v})
new_dict[key] = l
这将以以下格式输出 new_dict:
new_dict = {'key1': [{'A': 0}, {'B': 2},...], 'key2': [{...}, ...]}
推荐阅读
- vue.js - vue 好表 - filterDropdownItems 返回不正确的值
- docker-compose - 如何设置 Prometheus 的 node-exporter
- performance - 我应该在反向代理设置中使用 Jetty 或 NGINX 的 gzip 功能吗?
- python - 使用 python 的模拟补丁测试类不起作用
- c# - 如何访问另一个 ViewModel 中的一个 ViewModel 属性/数据
- r - 如何在 R 中使用 qtm 将图例添加到绘图中
- reactjs - 更新状态 ReactJS 中的对象
- javascript - 单击事件不是从 reactjs 中的 select onchange 事件触发的
- react-native - Redux 操作已触发但无法导航(React-Navigation)
- mysql - 现有事务中的 Entity Framework Core 手动 sql 查询