【问题标题】:Joining inner members inside a list of objects in Python [duplicate]在Python中的对象列表中加入内部成员[重复]
【发布时间】:2018-02-20 06:01:29
【问题描述】:

我有以下数组:

[
  {"Name": "abc", "Age": 10},
  {"Name": "xyz", "Age": 12},  
  {"Name": "def", "Age": 15}
]

我想从中创建以下数组:

["abc","xyz","def"]

即只从每个对象中取出名称字段。除了通过循环之外,还有更简单的方法吗?

【问题讨论】:

  • 正如你所看到的,其他人有两个答案 NO way to do it other than through a loop,因为你有一个 listdict,你需要在字典中获取项目。
  • 一个简单的循环有什么不容易的?

标签: python


【解决方案1】:

你的字典语法有错误,我假设你想使用字符串键。

可以使用列表推导解决该问题:

data = [
  {'Name': 'abc', 'Age': 10},
  {'Name': 'xyz', 'Age': 12},
  {'Name': 'def', 'Age': 15}
]

print([item['Name'] for item in data]) #=> ['abc', 'xyz', 'def']

您可以使用map 来避免使用循环,但这不是pythonic:

map(lambda i: i['Name'], data)

【讨论】:

  • 修复了问题中的字典语法。我在考虑地图版本。但如果它不是pythonic,那么我想我会采用循环方法。谢谢。
【解决方案2】:

您可以使用单行列表推导:

d = [
  {"Name": "abc", "Age": 10},
  {"Name": "xyz", "Age": 12},  
  {"Name": "def", "Age": 15}
]

data = [i["Name"] for i in d]

输出:

['abc', 'xyz', 'def']

【讨论】:

    【解决方案3】:

    没有循环 - 但您需要提前知道列表中字典的数量,并确保其中的每一个都是关键Name:

    your_nested_list = [
      {Name: "abc", Age: 10},
      {Name: "xyz", Age: 12},  
      {Name: "def", Age: 15}
    ]
    
    result = [
        your_nested_list[0][Name], 
        your_nested_list[1][Name], 
        your_nested_list[2][Name],
        ]
    

    够丑了吧?

    【讨论】:

      【解决方案4】:
      your_nested_list = [
        {Name: "abc", Age: 10},
        {Name: "xyz", Age: 12},  
        {Name: "def", Age: 15}
      ]
      
      
      result = []
      for dict in your_nested_list:
          result.append(dict[Name])
      

      在此代码中,您遍历嵌套列表中的字典并附加键 Name 的值。

      【讨论】:

        猜你喜欢
        • 2018-12-16
        • 1970-01-01
        • 2019-01-05
        • 2017-09-29
        • 1970-01-01
        • 2019-06-16
        • 2014-04-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多