Как наиболее эффективно удалить кортеж из списка кортежей на основе первого элемента кортежа в 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)]
}

Это работает, но неэффективно для больших списков. Есть ли у вас какие-либо идеи? Заранее спасибо.
Кроме того, с помощью этого кода вы можете создать большой набор данных
import math

def generate(width, height):
coordinates = [(x, y) for x in range(width) for y in range(height)]
dataset = {}

for x1, y1 in coordinates:
key = f"{x1}_{y1}"
distances = []
for x2, y2 in coordinates:
if (x1, y1) != (x2, y2):
distance = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
distances.append((f"{x2}_{y2}", distance))
dataset[key] = distances

return dataset


Подробнее здесь: https://stackoverflow.com/questions/784 ... -the-first
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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