Обновить значение при совпадении в массиве - PullRequest
0 голосов
/ 22 мая 2018

Я хотел бы изменить значение, когда имя хоста равно 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

Как обновить его идентификатор до 10 и записать его обратно в данные?

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Вы можете попробовать это:

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'}]
0 голосов
/ 22 мая 2018

С item['Id'] = 10?

for item in data:
    if item['hostname'] == 'c.example.com':
        item['Id'] = 10
0 голосов
/ 22 мая 2018

Прямое назначение должно работать нормально здесь:

for item in data:
    if item['hostname'] == 'c.example.com':
        item['Id'] = '10'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...