Python 两种不等长和不等维列表的比较
我有两个列表,Python 两种不等长和不等维列表的比较,python,list,python-2.7,loops,Python,List,Python 2.7,Loops,我有两个列表,a和b: a=[['apple'],['pear'],['grapes'],['cherry'],['mangoes'],['banana']] b=[['apple',15,14],['orange',30,43],['pear',6,67],['grapes',90,709],['cherry',23,9]] 我想要的结果是: b=[['apple',15,14],['orange',30,43],['pear',6,67],['grapes',90,709],['cherr
a
和b
:
a=[['apple'],['pear'],['grapes'],['cherry'],['mangoes'],['banana']]
b=[['apple',15,14],['orange',30,43],['pear',6,67],['grapes',90,709],['cherry',23,9]]
我想要的结果是:
b=[['apple',15,14],['orange',30,43],['pear',6,67],['grapes',90,709],['cherry',23,9],['mangoes',0.0,0.0],['banana',0.0,0.0]]
我试图比较两个长度不等的列表,并将唯一值从一个列表附加到另一个维度不等的列表中 首先,我将创建一个字符串的平面列表。如果您从其他地方获得
a
,您可以使用
a = [k[0] for k in a]
接下来,我将制作b
adict
,必要时再次使用
b = dict((k[0], k[1:]) for k in b)
最后,您只需要为a
中但尚未在b
中的键增加b
b.update(dict((k, [0.0,0.0]) for k in a if k not in b))
要转换回列表列表,请使用
b = [[key] + list(values) for k, values in b.iteritems()]
为什么
a
是一个列表列表,而不仅仅是['apple','pear',…]
?而且似乎b
真的想成为一个dict
像{'apple':(15,14),'orange':(30,43),…}
这样的a
仅仅是一个(可能不完整的)按键列表(实际的和期望的)对于b
。请包括您的。列表“a”是从其他一些列表导入的数据,这些列表以其原始形式具有多个已被删除的列,但列表状态列表仍保留。我可以将列表重新格式化为[‘苹果’、‘梨’、…],但这意味着又多了一步。但我仍然不知道如何获得列表“b”的预期结果,如何按照最初的要求将“b”转换回列表。b将输入其他列表或以列表格式存储附加数据。感谢您提供的解决方案,效果很好,但可以将列表转换为dict。