【问题标题】:Listing nested dictionary with list inside [closed]列出带有列表的嵌套字典[关闭]
【发布时间】:2020-11-22 13:34:08
【问题描述】:

我有这本词典

dictionary = {
    "Name": "Eva",
    "Surname": "Schwartz",
    "babies": [
        {
            "Name": "Klara",
            "age": 6
        },
        {
            "Name": "Nikola",
            "age": 8
        }
    ]
}

我需要在列表中获取婴儿的名字。我尝试了一切,在网上搜索了很长时间。有人可以帮忙吗?

【问题讨论】:

  • “我什么都试过了”——你什么尝试?什么不起作用?
  • 首先我想说我是一个绝对的初学者。所以我尝试了例如这个: print([x['babies']['name'] for x in d])

标签: python list dictionary nested nested-lists


【解决方案1】:

您可以使用 list comprehension

>>> dictionary = {
...     "Name": "Eva",
...     "Surname": "Schwartz",
...     "babies": [
...         {
...             "Name": "Klara",
...             "age": 6
...         },
...         {
...             "Name": "Nikola",
...             "age": 8
...         }
...     ]
... }
>>> baby_names = [baby["Name"] for baby in dictionary["babies"]]
>>> baby_names
['Klara', 'Nikola']

【讨论】:

    【解决方案2】:
    baby_names = []
    for baby in dictionary['babies']:
        baby_names.append(baby['Name'])
    

    【讨论】:

      【解决方案3】:

      获取婴儿名单非常简单: dictionary["babies"] 将返回以下列表:

      [
        {
          "Name": "Klara",
          "age": 6
        },
        {
          "Name": "Nikola",
          "age": 8
        }
      ]
      

      接下来,您要将列表中的每个变量“映射”成一个新变量:对于每个婴儿,不要获取完整的描述对象,而只是它的名称。在某些语言(如 javascript)中,.map() 是要走的路(对于列表中的每个元素,将其转换为一个新元素。或者 - 对于列表中的每个婴儿,取它的名字)。 在 python 中,进行列表或字典映射的更好方法是使用列表/字典理解(您可以使用与 js 中相同的技术并手动迭代列表并获取每个元素的名称,但它在 python 中效率较低且常见) .

      使用理解的代码是:

      babies = dictionary["babies"]
      names = [baby["Name"] for baby in babies]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-26
        • 2021-05-28
        • 2021-12-22
        • 2019-06-13
        • 2020-07-29
        • 2023-04-02
        • 2022-11-01
        相关资源
        最近更新 更多