首页 > 解决方案 > 合并字典中的两个列表

问题描述

我有两个 .txt 文件,其中一个 (a) 包含类别( , ,A,A,A....) 信息,另一个 (b) 包含值。我需要合并它们并拆分

谢谢你的帮助!

标签: pythonpython-3.xdictionarybuilt-in

解决方案


根据我对问题的理解,您将输入解析为并行流,其中第一个输入是标签,第二个是值。我了解标签旨在成为标签,这意味着结果将是标签/键上的值组。

我从您后面的评论中收集到,您还需要平均值、计数和其他信息。

对于该功能,我看到您可以使用以下内容:

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]}]}

推荐阅读