使用Python中的字典理解将3个列表唯一地组合成1个列表
发布时间:2020-12-20 11:06:45 所属栏目:Python 来源:网络整理
导读:我是学习 Python的新手,我是几百行的代码! start = ['12','08','07','16','04']middle = ['01','01','01']end = ['13','15','05'] 期望的输出(按顺序): [('1201': '13'),('0801': '07'),('0701': '08'),('1601': '15'),('0401','05')] 下面的代码将无法保
我是学习
Python的新手,我是几百行的代码!
start = ['12','08','07','16','04'] middle = ['01','01','01'] end = ['13','15','05'] 期望的输出(按顺序): [('1201': '13'),('0801': '07'),('0701': '08'),('1601': '15'),('0401','05')] 下面的代码将无法保持原始顺序(我使用python 3.4卡住了,知道3.7会解决这个问题) Combined_Lists = {start+middle: end for start,middle,end in zip(start,end)} 当我尝试以下时,它会出错 from collections import OrderedDict Combined_Lists = {start+middle: end for start,end in OrderedDict(zip(start,end))} 错误: ValueError: too many values to unpack (expected 2) 我在这里错过了什么? 解决方法
您的zip生成3个值,但OrderedDict需要可迭代的(键,值)对.
od = OrderedDict((s+m,e) for s,m,e in zip(start,end)) 之后您无法将其解压缩到常规字典中,因为这样您就会丢失订单. 您想要的输出是一个列表,所以您可能正在寻找 [(s+m,end)] 代替. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |