从嵌套的字典和列表中提取数据

塞巴斯蒂安·霍弗(Sebastian Hofer)

说我有一个像这样的字典:

dic = {'outer_key_1': {'inner_key_1': [1, 2, 3],
                       'inner_key_2': [4, 5, 6],
                       'inner_key_3': [7, 8, 9]}, 
       'outer_key_2': {'inner_key_1': [11, 12, 13],
                       'inner_key_2': [14, 15, 16],
                       'inner_key_3': [17, 18, 19]}}

我的目标是提取每个内部字典的第一个元素,并以嵌套列表结尾:

[[1, 4, 7], [11, 14, 17]]

或者,是这样的字典:

{'outer_key_1': [1, 4, 7], 'outer_key_2': [11, 14, 17]}

我已经尝试过使用嵌套列表推导方法到达那里,但是我能拿出的最好的是结果值的非嵌套列表(或多或少[1, 4, 7, 11, 14, 17]除外,除非这些值混合在一起,使用OrderedDict可以很容易地解决该问题)反而)。这是一个使用for循环的丑陋解决方案,但是我敢肯定,这里的人可以提出更好的建议。

# TODO: find a better way to do this
result = []
for inner_dict in dic.values():
    result.append([l[0] for l in inner_dict.values()])
print(result)

打印(再次,值混合在一起,但这不是手头的问题):

[[14, 17, 11], [4, 7, 1]]

解决这个问题的最优雅的方法是什么?我是python的新手,因此欢迎提供有关如何解决该问题的任何提示。我也尝试过尝试zip,我认为这是一种非常不错的方法,但是我仍然需要全神贯注于如何将其与列表推导结合使用,所以...有什么建议吗?

阿比吉特

这取决于您所说的优雅,但是对我来说,如果您对函数式编程理解得很好,以下内容将非常优雅

[zip(*e)[0] for e in map(dict.values, dic.values())]

那它做什么

  • dic.values() 返回字典中的值列表
  • map(dict.values, dic.values()) 返回字典中的第二层嵌套值
  • 最后,对于每个嵌套值列表,使用进行转置zip并获取第一行,实际上这是深度嵌套dict中的第一列。

如果您想进一步优化

  1. 替换mapitertools.imap
  2. 如果您仍在使用Python 2.X,请替换dict.valuesdict.itervalues

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用python从具有不同级别的嵌套列表和字典的json中提取数据

来自分类Dev

从嵌套列表中提取数据

来自分类Dev

从嵌套字典中提取多个列表

来自分类Dev

从字典python 3的列表中提取数据

来自分类Dev

从嵌套列表中提取特定数据

来自分类Dev

从深层嵌套列表中提取数据

来自分类Dev

从具有多个字典和列表的字典中提取数据的最佳方法?

来自分类Dev

从python中的嵌套列表中提取字典元素

来自分类Dev

如何在Ansible中从字典中提取深度嵌套的数据

来自分类Dev

从嵌套字典中提取值

来自分类Dev

如何从嵌套字典中提取?

来自分类Dev

如何从字典列表中提取数据到熊猫数据框?

来自分类Dev

基于列表从数据框中提取值作为字典

来自分类Dev

从字典列表中提取值

来自分类Dev

从字典列表中提取键

来自分类Dev

Python列表理解-从嵌套数据中提取

来自分类Dev

优雅,实用的方法从此嵌套R列表中提取数据

来自分类Dev

从嵌套列表中包含的数据框中提取两列

来自分类Dev

从列表中提取数据

来自分类Dev

如何从字典中提取数据?

来自分类Dev

如何从python中嵌套列表中的嵌套字典中提取值

来自分类Dev

Python:从嵌套的字典和列表中递归提取注释树

来自分类Dev

从列表和空数据框列表中提取元素

来自分类Dev

从python中的嵌套字典中提取值

来自分类Dev

从具有大量键值对的字典的高度嵌套列表中提取值

来自分类Dev

从R上的子集列表中提取和组织数据

来自分类Dev

如何从给定的元组列表中提取和比较数据?

来自分类Dev

从Python中的字典列表中提取键值对

来自分类Dev

从python字典中提取ID作为列表

Related 相关文章

热门标签

归档