python - 合并字典中的两个列表
问题描述
我有两个 .txt 文件,其中一个 (a) 包含类别( , ,A,A,A....) 信息,另一个 (b) 包含值。我需要合并它们并拆分
谢谢你的帮助!
解决方案
根据我对问题的理解,您将输入解析为并行流,其中第一个输入是标签,第二个是值。我了解标签旨在成为标签组,这意味着结果将是标签/键上的值组。
我从您后面的评论中收集到,您还需要平均值、计数和其他信息。
对于该功能,我看到您可以使用以下内容:
import itertools
def accumulator(seriesA,seriesB):
results = {}
for a,grouped in itertools.groupby(zip(seriesA,seriesB), key=lambda x:x[0]):
values = [x[1] for x in grouped]
count = len(values)
mean = sum(values)/count
results.setdefault(a, []).append(dict(values=values, count=count, mean=mean))
return results
为了清楚起见,我使用您的示例数据在本地对其进行了测试,而不是读取文件:
# SIMULATE the file reads for this example!
input_A = ['_','_','A','A','A','_','_','B','B','A','A']
input_B = [1.0, 1.264, 20.646, 14.346, 16.645, 327.5, 34.646, 343.97, 12.66, 147.2, 364.5454]
import pprint
pprint.pprint(accumulator(input_A, input_B), width=120)
结果:
$ python accumulator.py
{'A': [{'count': 3, 'mean': 17.212333333333333, 'values': [20.646, 14.346, 16.645]},
{'count': 2, 'mean': 255.87269999999998, 'values': [147.2, 364.5454]}],
'B': [{'count': 2, 'mean': 178.31500000000003, 'values': [343.97, 12.66]}],
'_': [{'count': 2, 'mean': 1.1320000000000001, 'values': [1.0, 1.264]},
{'count': 2, 'mean': 181.073, 'values': [327.5, 34.646]}]}
推荐阅读
- python - 尝试在 python 中编写准备好的语句
- c# - VB.NET中存在的C#中的Winforms“应用程序框架”在哪里?
- c# - 在windows窗体c#中拖放操作期间将光标保持在默认形状
- asp.net-core - .Net Core 2.2 Health Checks UI 给出空白页
- java - SWT Combo 防止 shift + 9 事件
- html - 如何在 div 中制作一半文本,在 CSS 中制作另一半文本?
- java - Tomcat HTTP Base 身份验证和 JAX-WS:客户端生成失败
- javascript - 使用 Jest & Enzyme 在 React 中测试父组件的道具功能
- c# - 如何在 ASP.NET CORE 3.0 中配置路由以使用带有 [FromQuery] 参数的重载 [HttpGet] 方法?
- ssis - SSIS - 如何使用执行 SQL 任务的结果来调用 Web 服务