查找列表中有多少嵌套字典键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找列表中有多少嵌套字典键相关的知识,希望对你有一定的参考价值。

我需要在字典中找到关键字'p'的出现次数。密钥嵌套在列表中的字典中,如下所示:

    {
"confidence": 0.2802316236036372,
"words": [
    {
        "p": 0,
        "c": 1,
        "s": 1420,
        "e": 4250,
        "m": "turn",
        "w": "Jennifer"
    },
    {
        "p": 1,
        "c": 0.487,
        "s": 1420,
        "e": 1620,
        "w": "Hi"
    }]}

我试过这个:

    import json
    import pprint

    data = json.load(open ('test.json'))

    data_list = data["words"]

    for word in data_list:
        x = str(word['p'])

       # word_list = []
       # word_list.append(x)

但它只返回各个字符串中的每一个。我尝试将这些附加到列表中但没有成功。我也在考虑制作一个for循环,只计算有多少,但这似乎是一个笨重的方法。我怎么能:1。一起创建所有字符串的列表,这样我可以删除最后一个字符串?或2.创建一个所有字符串的字符串,所以我可以类似地删除最后一个字符串?或3.循环遍历data_list中的每个“word”并计算它们?或4.获取所有字符串的列表,然后获取该列表的长度?谢谢。

答案

你过分思考了。要检查密钥是否在dict中,您只需执行some_key in some_dict。所以,你可以简单地使用sum

In [6]: d = {
   ...: "confidence": 0.2802316236036372,
   ...: "words": [
   ...:     {
   ...:         "p": 0,
   ...:         "c": 1,
   ...:         "s": 1420,
   ...:         "e": 4250,
   ...:         "m": "turn",
   ...:         "w": "Jennifer"
   ...:     },
   ...:     {
   ...:         "p": 1,
   ...:         "c": 0.487,
   ...:         "s": 1420,
   ...:         "e": 1620,
   ...:         "w": "Hi"
   ...:     }]}

In [7]: data_list = d['words']

In [8]: sum('p' in sub for sub in data_list)
Out[8]: 2
另一答案

您可以在列表解析中使用嵌套的sum函数:

data_list = {'confidence': 0.2802316236036372, 'words': [{'c': 1, 'e': 4250, 'm': 'turn', 'p': 0, 's': 1420, 'w': 'Jennifer'}, {'p': 1, 'c': 0.487, 'e': 1620, 's': 1420, 'w': 'Hi'}]}
the_count = sum(sum('p' in c for c in b) for a, b in data_list.items() if isinstance(b, list))

输出:

2

以上是关于查找列表中有多少嵌套字典键的主要内容,如果未能解决你的问题,请参考以下文章

搜索特定值的嵌套字典列表[重复]

嵌套字典。合并公共键并将值附加到列表中。 0 值未附加。里面的代码

在字典中递归查找键

带有字典、列表和 If 语句的嵌套循环

在嵌套字典中查找特定键的值

查找字典的最大值并打印键、值对[重复]