python - 根据带有一个嵌套字典的键过滤字典列表

标签 python list dictionary

示例:

[{"a":{"x":13, "y":32, "z":33}, "b":5, "c":7, "d":8, "e":9}, {"a":{"x":18, "y":28, "z":38}, "b":57, "c":77, "d":87, "e":97}, {"a":{"x":17, "y":72, "z":73}, "b":58, "c":70, "d":80, "e":90}, ...]

这只是一个小样本集,但我想要的是一个列表,其中包含每个字典中经过过滤的项目列表,如下所示:

示例输出:

[{"x":13, "b":5, "e"9}, {"x":18, "b":57, "e"97}, {"x":17, "b":58, "e"90}, ...]

我可以将其过滤为以下内容:

[{"a":{"x":13, "y":32, "z":33}, "b":5, "e":9}, {"a":{"x":18, "y":28, "z":38}, "b":57, "e":97}, {"a":{"x":17, "y":72, "z":73}, "b":58, "e":90}, ...]

使用以下代码

for i in range(len(results)):
    desired_keys = ['a', 'b', 'e']
    bigdict = all_results[i]
    filtered = {x: bigdict[x] for x in desired_keys if x in bigdict}

但尚未弄清楚如何获取嵌套字典的一个元素。

最佳答案

您不能只使用您的方法,因为它仅适用于顶级键。您需要指定每个键以及如何从嵌套字典访问它:

>>> [{'x': e['a']['x'], 'b': e['b'], 'e': e['e']} for e in results]
[{'x': 13, 'b': 5, 'e': 9}, {'x': 18, 'b': 57, 'e': 97}, {'x': 17, 'b': 58, 'e': 90}, ...]

关于python - 根据带有一个嵌套字典的键过滤字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59763781/

相关文章:

python - 读取文件夹中的多个 csv 文件

python - 从 2D 列表中删除重复元素(不是列表),Python

dictionary - 将键值对添加到 Julia 语言字典中的现有键

python - 用于打印的排序字典

python 将 lambda 函数映射到列表

python - numpy dot()和内()之间的差异

scala - 使用重复键将对象列表转换为 map

list - 将元素添加到 Map 内的 List (ImmutableJS)

python - 如何用随机字典值填充 pandas 数据框列

python - python flask web应用程序中的全局变量