【问题标题】:Update a value when matched in array在数组中匹配时更新值
【发布时间】:2018-10-31 16:05:37
【问题描述】:

当主机名为c.example.com时,我想更改一个值

样本数据:

[
  {
    "hostname": "a.example.com",
    "Id": "1"
  },
  {
    "hostname": "b.example.com",
    "Id": "2"
  },
  {
    "hostname": "c.example.com",
    "Id": "1"
  },
  {
    "hostname": "d.example.com",
    "Id": "1"
  }
]

我可以匹配项目

data=[{"hostname":"a.example.com","Id":"1"},{"hostname":"b.example.com","Id":"2"},{"hostname":"c.example.com","Id":"1"},{"hostname":"d.example.com","Id":"1"}]
for item in data:
    if item['hostname'] == 'c.example.com':
          # how to update its id to 10 and write it back to data

如何将其id更新为10并写回data?

【问题讨论】:

    标签: python json list dictionary for-loop


    【解决方案1】:

    你可以试试这个:

    sample_data = [
    {
    "hostname": "a.example.com",
    "Id": "1"
    },
    {
    "hostname": "b.example.com",
    "Id": "2"
    },
    {
    "hostname": "c.example.com",
    "Id": "1"
     },
    {
    "hostname": "d.example.com",
    "Id": "1"
    }
    ]
    
    for item in sample_data:
        if item['hostname'] == "c.example.com":
            item['Id'] = 10
    
    print(sample_data)
    

    解释:

    使用for-loop 遍历元素并使用if 搜索c.example.com。如果匹配使用= 运算符,则为Id 分配一个新值

    输出:

    [{'hostname': 'a.example.com', 'Id': '1'}, {'hostname': 'b.example.com', 'Id': '2'}, {'hostname': 'c.example.com', 'Id': 10}, {'hostname': 'd.example.com', 'Id': '1'}]
    

    【讨论】:

    • @Bill:它已经过测试并得到了您所需的输出。这是你所期待的吗?
    【解决方案2】:

    直接分配在这里应该可以正常工作:

    for item in data:
        if item['hostname'] == 'c.example.com':
            item['Id'] = '10'
    

    【讨论】:

    • 谢谢,我觉得方法太复杂了。
    【解决方案3】:

    item['Id'] = 10 ?

    for item in data:
        if item['hostname'] == 'c.example.com':
            item['Id'] = 10
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多