У меня есть следующая структура данных:
data = {
'0_0': [('0_0', 0), ('0_1', 1), ('0_2', 2)],
'0_1': [('0_0', 1), ('0_1', 0), ('0_2', 1)],
'0_2': [('0_0', 2), ('0_1', 1), ('0_2', 0)],
}
Как удалить кортеж из списков по заданному ключу? Например, я написал следующую функцию:
def remove_all_acs(
dictionary,
delete_ac
):
for key in dictionary:
acs = dictionary[key]
for ac in acs:
if ac[0] == delete_ac:
acs.remove(ac)
break
return dictionary
Это мой ожидаемый результат, который возвращает следующий результат:
print(remove_all_acs(data, '0_0'))
{
'0_0': [('0_1', 1), ('0_2', 2)],
'0_1': [('0_1', 0), ('0_2', 1)],
'0_2': [('0_1', 1), ('0_2', 0)]
}
Это работает, но неэффективно для больших списков. Есть ли у вас какие-либо идеи? Заранее спасибо.
Кроме того, с помощью этого кода вы можете создать большой набор данных
def generate(size, max_connections):
data = {}
keys = [f'{i}_{j}' for i in range(size) for j in range(size)]
for key in keys:
connections = random.randint(1, min(max_connections, 10))
data[key] = [
(random.choice(keys), random.randint(1, 10))
for _ in range(connections)
]
return data
data = generate(200, 10)
Подробнее здесь: https://stackoverflow.com/questions/784 ... -the-first
Как наиболее эффективно удалить кортеж из списка кортежей на основе первого элемента кортежа в Python? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение