Итерация списка и словаря одновременно Python - PullRequest
0 голосов
/ 23 марта 2020

У меня есть список словаря (k) и список (l)

k = [
    {'x': 2.5, 'y': 1.5, 'z': 2},
    {'x': 3, 'z': -1.5},
]

l = [-9, -2, -4, 1, 4, 7]

Какой будет самый простой способ итерировать k и z вместе, чтобы мы могли вычислить формулу, например, используя эти значения?

До сих пор я использовал:

for dic in k:
    for key in dic:
        print(dic[key])

Но это только итерации k. Мне нужно и k, и z для итерации, чтобы мы могли использовать последующие значения для вычисления функции.

Выход, ожидаемый для вычисления функции для каждого значения:

x + y*l + z*l*l

x,y,z будет 0 там, где его нет

Ответы [ 2 ]

2 голосов
/ 23 марта 2020
import itertools

k = [
    {'x': 2.5, 'y': 1.5, 'z': 2},
    {'x': 3, 'z': -1.5},
]

l = [-9, -2, -4, 1, 4, 7]


for d, i in itertools.zip_longest(k, l, fillvalue={}):
    x = d.get('x', 0)
    y = d.get('y', 0)
    z = d.get('z', 0)
    print(x + y*i + z*i*i)

вывод:

151.0
-3.0
0
0
0
0

ограничение: l всегда должно быть длиннее k.

0 голосов
/ 23 марта 2020

Попробуйте это

for dic, l in zip(k, z):
    x, y, z = dic.get(‘x’, 0), dic.get(‘y’, 0), dic.get(‘z’, 0)
    return x + y*l + z*l*l
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...