【问题标题】:How to access the value of 1st key of all the dictionaries saved as a list for a key in JSON using PYTHON如何使用 PYTHON 访问保存为 JSON 中键的列表的所有字典的第一个键的值
【发布时间】:2018-12-06 16:36:57
【问题描述】:

我有如下所示的 JSON:-

{
        "name": "PT",
        "batservers": [
            {"name": "bat1", "qmchannel": "abcd", "mount": "efgh"},
            {"name": "bat2", "qmchannel": "abcd", "mount": "efgh"},
            {"name": "bat3", "qmchannel": "abcd", "mount": "efgh"},
        ]
    }

我想检索所有字典中存在的“name”的值并将其保存在列表变量中,即 ["bat1","bat2","bat3"]

我尝试过这样的事情:-

batsList = env["batservers"][0:]["name"]

但它显示以下错误:-

TypeError: list indices must be integers or slices, not str

我知道我可以使用循环来做到这一点,但有人可以帮我以我在上面尝试的单行代码方式使用吗?

谢谢, 苏亚什·古普塔。

【问题讨论】:

  • 你希望[0:] 这个做什么?您不能使用字符串访问列表的元素。

标签: python json python-3.x list dictionary


【解决方案1】:

如果没有循环,您将无法做到这一点。但循环可以是列表理解:

batsList = [b['name'] for b in env["batservers"]

【讨论】:

  • 感谢丹尼尔的澄清。我会试试这个。我认为如果允许这样的 env["batservers"][0]["name"] ,我们可以这样做。我们可以访问列表的所有元素,如 print(a[0:]),但显然通过对我的问题的回答,我不能像 env["batservers"][0:]["name"] 那样合并两者。无论如何谢谢:)
【解决方案2】:

如何将列表另存为:

list_of_names = [x[name] for x in env["batservers"]]

【讨论】:

    【解决方案3】:

    试试这个:

    [b['name'] for b in env['batservers']]
    

    或者这个:

    map(lambda b: b['name'], env['batservers'])
    

    [0:] 对您没有多大作用:它返回相同的字典数组。

    【讨论】:

      【解决方案4】:

      env["batservers"][0:]返回一个列表,不能直接访问列表中dict的值。

      您可以使用列表推导:

      names = [elem["name"] for elem in env["batservers"]]
      

      【讨论】:

        【解决方案5】:

        这是一个基本解决方案,使用 for 循环遍历子 dictionary 并附加到空的 list res

        res = []
        for item in env["batservers"]:
          res.append(item["name"])
        
        print (res) #=> ['bat1', 'bat2', 'bat3']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-27
          • 1970-01-01
          • 2012-12-31
          • 1970-01-01
          • 2021-12-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多