Фильтрация 2D-массива / списка и замена значения в python - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу заменить число в этом 2d-массиве, если имя пользователя уже существует.

[["bob man", "0"], ["bill kill", "5"], ["nick", "5"]]

Например, когда я получаю имя пользователя "bob man", новым номером 44. Я хочу найдите мой массив и проверьте, существует ли это имя пользователя, и замените номер. Если он не существует, я хочу добавить его в массив.

[["bob man", "44"], ["bill kill", "5"], ["nick", "5"]]

Есть ли лучший способ сохранить это? Я новичок в python, и такие простые вещи кажутся гораздо более сложными, чем в js et c. Предметы

1 Ответ

0 голосов
/ 24 апреля 2020

Вы можете использовать numpy структурированный массив, если хотите сохранить порядок:

a = np.array([("bob man", 0), ("bill kill", 5), ("nick", 5)], dtype=[('name', 'U10'), ('value', 'i4')])
new_entry = np.array([('bob man', 44)], dtype=[('name', 'U10'), ('value', 'i4')])

if new_entry['name'] in a['name']:
  a['value'][a['name']==new_entry['name']] = new_entry['value']
else:
  a = np.append(a, new_entry)

Я ожидаю, что он будет быстрее, чем словари, особенно если вы хотите добавить более одной записи, вы можете включить их все в new_entry и немного изменить код, чтобы проверить, что происходит в массиве, чтобы быть быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...