Как наиболее эффективно удалить кортеж из списка кортежей на основе первого элемента кортежа в Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как наиболее эффективно удалить кортеж из списка кортежей на основе первого элемента кортежа в Python?

Сообщение Anonymous »

У меня есть следующая структура данных:
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»