Python 有没有办法选择字典列表中字典的特定键值

Python 有没有办法选择字典列表中字典的特定键值,python,json,list,dictionary,Python,Json,List,Dictionary,我目前正在使用for循环打印字典中所有必需的键值对。但是,有没有更简单的方法来选择所需的键值对 for i in (out['elements']): out = (i['insights'][0]['details']['socialInfo']) out_temp.append(out) out的内容实际上是一个包含字典列表的JSON,每个字典都包含一个字典列表。我看不到一种更简单的方法来访问您需要的数据。但是,您可以通过列表

我目前正在使用for循环打印字典中所有必需的键值对。但是,有没有更简单的方法来选择所需的键值对

        for i in (out['elements']):
            out = (i['insights'][0]['details']['socialInfo'])
            out_temp.append(out)

out的内容实际上是一个包含字典列表的JSON,每个字典都包含一个字典列表。

我看不到一种更简单的方法来访问您需要的数据。但是,您可以通过列表理解更有效地应用您的逻辑:

out_temp = [i['insights'][0]['details']['socialInfo'] for i in out['elements']]

这是否更简单还有待讨论。

您也可以使用map生成新列表。但我认为你所做的很好,它比其他选择更容易阅读

out_temp = list(map(lambda x: x['insights'][0]['details']['socialInfo'], out['elements']))

你所要求的双是什么意思?您能否发布一个可能是in-out的JSON示例,以及您想要的输出是什么?询问字典的第一个键值是什么意思?字典不是序列,即不存储位置。有序字典可以通过使用“有库”来实现,这些库允许您将“键路径”编写为单个字符串或元组,并使用通配符一次性将其应用于嵌套结构,然后返回结果列表。至少有三种不同的格式,一种基于XPath,一种基于Cocoa KVC,一种基于类似JavaScript的Python语法,还有很多方括号。例如,您可以写出“elements.*.insights.0.details”。展开以获得此列表。如果这是您感兴趣的内容,您应该在PyPI中搜索dpath、kvc和…我忘记了另一个,但是环顾四周,您应该会找到它。我个人认为,使用本机理解比使用dpath通配符更好地处理简单案例,而复杂的案例通常需要某种自定义逻辑,至少在搜索中需要错误处理,因此这些库有用的窗口非常小。但是有些人似乎发现用嵌套通配符比我更容易思考,或者用循环或其他方式更难思考。使用比使用lambda和map更具python风格