【发布时间】:2015-01-15 23:55:37
【问题描述】:
如果有人知道如何表达问题以使其更清晰,请随时编辑!
我有一个这样的列表:
a = [["Adolf", "10"], ["Hermann", "20"], ["Heinrich", "30"]]
我有一个这样的“更新”列表:
b = [["Rudolf", "40"], ["Adolf", "50"]]
我希望能够添加新条目并使用列表 b 覆盖列表 a 中的相同条目:
c = magic(a, b)
结果应该如下:
>>> print(c)
[["Adolf", "50"], ["Hermann", "20"], ["Heinrich", "30"], ["Rudolf", "40"]]
是否存在类似魔法的功能?如果不是,怎么写?
编辑:为了清楚起见,我知道字典方法。出于我的目的,我需要有重复的条目,所以字典不合适——这就是我询问列表的原因。在提及之前,将对这些特殊的重复条目进行保护。例如,假设“Heinrich”是这些可以有重复项的特殊类型之一:
a = [['Adolf', '10'], ['Hermann', '20'], ['Heinrich', '30'], ['Heinrich', '15']]
现在,假设我有如下更新列表:
b = [['Rudolf', '40'], ['Adolf', '50']]
使用列表b 更新列表a 应生成以下列表:
>>> print(c)
[['Adolf', '50'], ['Hermann', '20'], ['Heinrich', '30'], ['Heinrich', '15'], ['Rudolf', '40']]
如您所见,有预期的重复条目。这就是为什么不能直接使用字典的原因。
【问题讨论】:
-
您使用了错误的数据结构。这应该在字典里。
-
不,这没有什么神奇的功能。但是您可以为此使用
collections.Counter。顺便说一句,顺序重要吗? -
你有没有你尝试过来弄清楚它是怎么写的?有什么想法吗?不应该是
['Adolf', '60']吗?它们真的应该是字符串而不是数字吗? -
@g.d.d.c 我知道字典的方法。我需要使用 duplicate 条目,因此字典不适用于我的目的。 (任何被更新的条目不得重复。)@Ashwini Chaudhary保持顺序是可取的,是的。
-
你是什么意思“我需要有重复的条目”?在那种情况下,
["Adolf", "10"]去哪儿了?什么情况下允许重复?合并的逻辑是什么?