如何在Python中将列表组成的字典传入zip函数
解决可变数量参数传入zip的问题
这问题其实用Python的参数解包就能轻松搞定,不用纠结参数数量的问题,步骤很简单:
- 首先,你的字典里存的是所有hostname对应的列表,我们可以用
host_dict.values()拿到这些列表的集合; - 然后用
*操作符把这些列表逐个解包成zip的单独参数,再加上前面的list_timestamp就行。
示例代码
# 你的原始数据 host_dict = {'list_hostname1': [1, 6, 7], 'list_hostname2': [4, 2, 8], 'list_hostname3': [3, 5, 0]} list_timestamp = ['2019-12-31', '2020-05-21', '2020-06-01'] # 核心操作:用*解包字典中的所有列表 zipped_result = zip(list_timestamp, *host_dict.values()) # 转换成元组查看结果(zip返回的是迭代器,直接打印看不到完整内容) print(tuple(zipped_result))
运行后会输出你想要的结果:
(('2019-12-31', 1, 4, 3), ('2020-05-21', 6, 2, 5), ('2020-06-01', 7, 8, 0))
额外注意:列表顺序问题
如果你的Python版本是3.7及以上,字典默认是插入有序的,所以host_dict.values()的顺序会和你添加键值对的顺序一致。但如果是更早的版本(Python 3.6及以下),字典是无序的,这时候你可能需要按键的顺序来提取列表,比如:
# 按键的排序顺序获取列表 sorted_lists = [host_dict[key] for key in sorted(host_dict.keys())] zipped_result = zip(list_timestamp, *sorted_lists)
这样就能保证传入zip的列表顺序和你预期的一致啦。
内容的提问来源于stack exchange,提问作者symbolads
相关产品推荐
相关产品推荐

