[英]Python: How to sort a list of dictionaries by similar keys
我有这些数据,想像这样对它们进行排序
输入:
[{'POINT': 0.1}, {'POINT': 0.2}, {'THRESHOLD': 0.1}, {'THRESHOLD': 0.4}, {'INDEX': 0.3}, {'INDEX': 0.9}]
我希望 output 是这样的
[
{'POINT': 0.1, 'THRESHOLD': 0.1, 'INDEX': 0.3},
{'POINT': 0.2, 'THRESHOLD': 0.4, 'INDEX': 0.9}
我曾尝试遍历列表并跟踪键,但对我来说似乎并不聪明。
假设我正确理解了问题设置,您可以这样做:
pd.DataFrame({k: list(v.dropna()) for k, v in pd.DataFrame(x).items()}).to_dict('records')
这种方式值按照它们出现的顺序使用,如果你想让它们排序,使用sorted
而不是list
:
pd.DataFrame({k: sorted(v.dropna()) for k, v in pd.DataFrame(x).items()}).to_dict('records')
如果它不必是字典列表,您可以在 pandas dataframe 中显示它。 这也将使您更容易对数据执行任何任务。
import pandas as pd
l = [{'POINT': 0.1}, {'POINT': 0.2}, {'THRESHOLD': 0.1}, {'THRESHOLD': 0.4}, {'INDEX': 0.3}, {'INDEX': 0.9}]
result_d, keys = {}, []
for d in l:
key = list(d.keys())[0]
if key not in keys:
keys.append(key)
result_d[key] = []
for d2 in l:
key2 = list(d2.keys())[0]
if key2 == keys[-1]:
result_d[key].append(d2[key2])
print(result_d)
Output:
{'POINT': [0.1, 0.2], 'THRESHOLD': [0.1, 0.4], 'INDEX': [0.3, 0.9]}
从dict构造DataFrame:
pd.DataFrame(result_d)
Output:
POINT THRESHOLD INDEX
0 0.1 0.1 0.3
1 0.2 0.4 0.9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.