我试图找到将字典列表转换为numpy数组的最佳方法(用NULL填充缺失值).我还需要相反的方法:将numpy数组数组转换为字典列表(给定键的标题).
问题: Python字典没有排序.在处理大量行时,理解列表不是最佳选择.
例:
listOfDicts = [{'key1': 10, 'key2': 15, 'key3': 19}, {'key1': 20, 'key2': 25, 'key3': 29}, {'key1': 30, 'key2': 35, 'key3': 39}, {'key1': 40, 'key2': 45, 'key3': 49}]
预期产量:
[[10 15 19] [20 25 29] [30 35 39] [40 45 49]]
为什么我需要这个:我需要这个,因为我正在将Python脚本集成到Splunk搜索中.Splunk的输入是一个字典列表,由返回splunk.Intersplunk.getOrganizedResults()
.并显示我们需要调用的输出,splunk.Intersplunk.outputResults(results)
其中results
也是一个字典列表
您可以使用pandas轻松完成此操作:
import pandas as pd listOfDicts = [{"key1":10, "key3":19}, {"key1":20, "key2":25, "key3":29}, {"key1":30, "key2":35, "key3":39}, {"key1":40, "key2":45, "key3":49}] df = pd.DataFrame(listOfDicts) vals = df.values vals array([[10, nan, 19], [20, 25, 29], [30, 35, 39], [40, 45, 49]])
要将NumPy数组转换为字典,您可以使用:
df2 = pd.DataFrame(vals, columns=df.columns) df2.to_dict(orient='records') [{'key1': 10.0, 'key2': nan, 'key3': 19.0}, {'key1': 20.0, 'key2': 25.0, 'key3': 29.0}, {'key1': 30.0, 'key2': 35.0, 'key3': 39.0}, {'key1': 40.0, 'key2': 45.0, 'key3': 49.0}]