我有这个数据:

list_of_dicts_of_lists = [
    {'a': [1,2], 'b': [3,4], 'c': [3,2], 'd': [2,5]}
    {'a': [2,2], 'b': [2,2], 'c': [1,6], 'd': [4,7]}
    {'a': [2,2], 'b': [5,2], 'c': [3,2], 'd': [2,2]}
    {'a': [1,2], 'b': [3,4], 'c': [1,6], 'd': [5,5]}
    ]

我需要这个结果:
median_dict_of_lists = (
    {'a': [1.5,2], 'b': [3,3], 'c': [2,4], 'd': [3,5]}
    )

…其中每个值都是上述各列的中值。
当没有模式存在时,我需要模式字典在可用的和中值字典。我可以通过串接每个dict,获取字符串列表的模式,然后返回到dict,来快速地完成statistics.mode()操作,但是在没有模式的情况下,我需要一个按列的中值。
我知道如何使用ast.literal_eval(most_common_string);但是,将其应用于本例的嵌套表示法(按列计算)让我很费解。
数据都是浮点数;我把它写成int,只是为了更容易阅读。

最佳答案

You can use the following dictionary comprehension with numpy:

import numpy as np
median_dict_of_lists = {i : list(np.median([x[i] for x in list_of_dicts_of_lists], axis=0))
                    for i in 'abcd'}

返回相同的结果:
{'a': [1.5, 2.0], 'c': [2.0, 4.0], 'b': [3.0, 3.0], 'd': [3.0, 5.0]}

为了解释,嵌入词典理解中的np.median([x[i] for x in list_of_dicts_of_lists], axis=0)将遍历i中的每个键,并获取原始听写列表中所有听写的每个键的中位数。。
词典理解语法有很好的解释,here很好地解释了函数本身

关于python - 我需要python中的list_of_dicts_of_lists的列明智中位数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49353986/

10-12 14:04