python-3.x 如何在字典列表中压缩密钥

ogq8wdun  于 2023-02-26  发布在  Python
关注(0)|答案(1)|浏览(112)

我有这样一个目标:

dvalues = [{'column': 'Environment', 'parse_type': 'iter', 'values': ['AirportEnclosed', 'Bus', 'MotorwayServiceStation']}, {'column': 'Frame Type', 'parse_type': 'list', 'values': ['All']}]

我想要一个压缩输出如下:

('AirportEnclosed', 'All')
('Bus', 'All')
('MotorwayServiceStation', 'All')

到目前为止,我所得到的最接近的是下面的:

for d in dvalue:
    dv = d['values']
    zip_list = zip(dv, d['values'])
    for z in zip_list:
        print(z)

它给出了以下输出:

('AirportEnclosed', 'AirportEnclosed')
('Bus', 'Bus')
('MotorwayServiceStation', 'MotorwayServiceStation')
('All', 'All')

我需要做哪些更改才能获得所需的输出?

gwbalxhn

gwbalxhn1#

我不确定我是否理解了基本的推理,也不确定你想要的解决方案有多普遍(字典总是两个,还是可以多个?)。这里有一些东西可以让你开始:

dvalues = [{'column': 'Environment', 'parse_type': 'iter', 'values': ['AirportEnclosed', 'Bus', 'MotorwayServiceStation']}, {'column': 'Frame Type', 'parse_type': 'list', 'values': ['All']}]

import itertools

la = dvalues[0]['values']
lb = dvalues[1]['values']

print([(x, y) for x,y in zip(la, itertools.cycle(lb))])

这将给出所需的输出:

[('AirportEnclosed', 'All'), ('Bus', 'All'), ('MotorwayServiceStation', 'All')]

灵感来源:Loop over 2 lists, repeating the shortest until end of longest

相关问题