У меня есть следующая структура данных:
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
Как наиболее эффективно удалить кортеж из списка кортежей на основе первого элемента кортежа в Python? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение