Извлечение значений из списка словарей для скользящих вычислений - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь перебрать список словарей и извлечь значения на основе ключа и индекса словаря.

Моя цель - присвоить значения из моего первого словаря переменным x1 / y1, затем перейти и сделать то же самое со своим вторым словарем для переменных (x2, y2), затем я выполню вычисление.Как только вычисление выполнено, я бы хотел сделать то же самое со словарем 2/3 и так далее, пока я не вычислю все словари в списке.

Я застрял, потому что не могу сослаться на словарь указателя.В настоящее время мой код хранит только значения в lon1 / lat1.

lst = [{'lat': 1, 'Time': 1, 'lon': 1},
       {'lat': 2, 'Time': 2, 'lon': 2},
       {'lat': 3, 'Time': 3, 'lon': 3}]

x1 = () 
x2 = ()
y1 = ()
y2 = ()

for k, v in [(k, v) for x in lst for (k, v) in x.items()]:
   if k == 'lon'
       x1 = v
   elif k == 'lat':
       y1 = v
   elif k == 'lat':
       x2 = v
   elif k == 'lon':
        y2 = v

Редактировать: Убрал ненужный код и попытался объяснить мою цель более кратко.Я решил оставить ненужные переменные, потому что для вычисления мне необходимо использовать формулу с этими переменными.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Возможно, это поможет вашей организации?Операторы print просто показывают, что вы правильно извлекли координаты.

lon_lat = []
for point in lst:
    lon_lat.append( (lst["lon], lst["lat]) )

print (lon_lat[0])
print (lon_lat[1])

Вывод:

(1, 1)
(2, 2)

lon_lat - это список кортежей, содержащих lon и lat каждой позиции.Вы можете также легко использовать их для расчета.

0 голосов
/ 01 марта 2019

Dicts предназначены для доступа по ключам (чтобы воспользоваться преимуществом сложности времени O (1) при извлечении значения), а не повторяться в поисках ключа.Для вашей обработки элементов списка в подвижных парах вы можете zip сам список со смещением 1 для итерации вместо:

for a, b in zip(lst, lst[1:]):
    lon1 = a['lon']
    lat1 = a['lat']
    lon2 = b['lon']
    lat2 = b['lat']
    # perform your calculations for the pair of dict a and dict b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...