python - 从字典列表到 np 数组数组,反之亦然

标签 python list numpy dictionary splunk

我正在尝试找到将字典列表转换为数组的 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}]

关于python - 从字典列表到 np 数组数组,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34066053/

相关文章:

python - 我如何只读取文本文件每一行的第一个单词?

python - 图表中条形图的颜色基于数据框同一行中的 bool 值

python - 如何将引导脚本添加到 tox 的 virtualenv?

java - 在java中存储文本文档: memory usage

C++ 如何创建 std::list 数组?

linux - python整数的numpy默认dtype

python - django-国家/地区下拉列表不显示

python - 如果两个字典有重复的键,则从列表中删除字典

python - 如何跟踪监督学习中的标签?

python - 在 Pandas 中跨组应用平均值