繁体   English   中英

我如何获得这种字典数组

[英]How do I get this kind of array of dictionaries

我有一个 function 将 id、name、age、country 作为输入并将其放入字典中的字典中,如下所示: {0:{Name: "Name1", Age: 21, Country: "Country1}} 。我计划把它放在一个数组中。我希望我的字典数组看起来像这样

[
  {
    0: {
      'Name': 'Name1',
      'Age': 21,
      'Country': 'Country1'
    },
    1: {
      'Name': 'Name2',
      'Age': 22,
      'Country': 'Country2'
    },
    3: {
      'Name': 'Name3',
      'Age': 23,
      'Country': 'Country3'
    }
  }
]

但是,我当前的数组如下所示:

[
  {
    0: {
      'Name': 'Name1',
      'Age': 21,
      'Country': 'Country1'
    }
  },
  {
    1: {
      'Name': 'Name2',
      'Age': 22,
      'Country': 'Country2'
    }
  },
  {
    3: {
      'Name': 'Name3',
      'Age': 23,
      'Country': 'Country3'
    }
  }
]

就括号 {} 的放置方式而言,两者之间存在细微差别。 如何使我的字典数组看起来像第一个字典?

我的代码:

arr_users = []

def add_entry(id,name,age,country):
    users = {}
    data = { 'Name': name, 'Age': age, 'Country': country }
    users[id] = data    
    arr_users.append(users)    

add_entry(0, "Name1", 21, "Country1")
add_entry(1, "Name2", 22, "Country2")
add_entry(3, "Name3", 23, "Country3")

print(arr_users[0]) 

您的代码正在生成一个字典列表。 您似乎想要的是一个只包含一本字典的列表。 所以:

def add_entry(id_, name, age, country, d):
    d[id_] = { 'Name': name, 'Age': age, 'Country': country }   

d = dict()

add_entry(0, "Name1", 21, "Country1", d)
add_entry(1, "Name2", 22, "Country2", d)
add_entry(3, "Name3", 23, "Country3", d)

arr_users = [d]
print(arr_users)

Output:

[{0: {'Name': 'Name1', 'Age': 21, 'Country': 'Country1'}, 1: {'Name': 'Name2', 'Age': 22, 'Country': 'Country2'}, 3: {'Name': 'Name3', 'Age': 23, 'Country': 'Country3'}}]

每次你调用 function 你 append 一个新的dict到数组,而你希望数组有一个包含所有数据的dict ,所以你需要修改 ZC1C425268E68385D1AB5074C17A:

arr_users = [{}]

def add_entry(id,name,age,country):
    obj = arr_users[0]

    data = { 'Name': name, 'Age': age, 'Country': country }
    obj[id] = data

另请注意,您掩盖了内置id function 这在某种程度上是一种不好的做法,可能将名称更改为_identity_id

我通常不直接将解决方案作为代码共享,但它应该是这样的。

arr_users = []

def add_entry(id,name,age,country):

    users = {}

    data = {'Name': name, 'Age': age, 'Country': country}

    users[id] = data
    if len(arr_users) == 0:
        arr_users.append(users)
    else:
        arr_users[0] = {**arr_users[0], **users}


add_entry(0, "Name1", 21, "Country1")
add_entry(1, "Name2", 22, "Country2")
add_entry(3, "Name3", 23, "Country3")

print(arr_users[0]) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM