我有这个数据:
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/