【问题标题】:comparing two unequal length and unequal dimension list比较两个不等长不等维度的列表
【发布时间】:2015-05-05 20:05:14
【问题描述】:

我有两个列表,ab

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 是一个列表列表,而不仅仅是['apple', 'pear', ..]?看来b 真的很想成为dict 就像{'apple': (15, 14), 'orange': (30, 43), ...} 这样会使a 只是b 的(可能不完整的)键列表(实际的和期望的)。
  • 请附上您的mcve
  • list 'a' 是从其他一些列表导入的数据,该列表在其原始形式中有多个列已被删除,但列表状态列表仍然存在。我可以将列表重新格式化为 ['apple', 'pear', ..] 但这意味着再迈出一步。而且我仍然不知道如何达到我想要的列表“b”的结果

标签: python list python-2.7 loops


【解决方案1】:

首先,我将创建a 平面字符串列表。如果你从其他地方得到a,你可以用

a = [k[0] for k in a]

接下来,我会将b 设为dict,如有必要,再次转换

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()]

【讨论】:

  • 如何将“b”转换回最初需要的列表列表。 b 将输入其他列表或以列表格式存储其他数据。感谢您的解决方案,效果很好,但将列表转换为字典。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 2017-12-24
  • 2012-10-07
相关资源
最近更新 更多