如果键已存在,则将值附加到键(python / jython)

时间:2012-06-01 04:08:38

标签: python dictionary jython key

我有一个列表,我需要在字典中。该列表具有重复(即将成为)具有不同值的键。如何找到这些键并将新值附加到它?

list=[q:1,w:2,q:7]
dictionary= q:1,7
            w:2

提前致谢

1 个答案:

答案 0 :(得分:9)

在字典列表中创建值,以便:

dictionary = {'q': [1, 7],
              'w': [2]
}

等。即,您的单项值是单项列表。这意味着当您有另一个'q'时,您可以执行此操作:

dictionary['q'].append(5)

除非dictionary['q']首次使用KeyError,否则请改用setdefault

dictionary.setdefault('q', []).append(5)

所以现在你只需要迭代输入列表中的每个键值对,并为每个键执行上述操作。

您可能希望dictionary成为:

dictionary = collections.defaultdict(list)

所以你可以做dictionary['q'].append(5) - 它将与上面相同,在所有方面都是第一个。如果在解析原始列表并正确设置所有值后,您的字典将如下所示:

dictionary = {'q': [1, 7, 5]
              'w': [2, 8, 10, 80]
              'x': [3]
}

你尝试print(dictionary['y'])。你期望发生什么?如果您使用普通字典和setdefault,则会将其视为错误,因此会引发KeyError。如果您使用defaultdict,它将打印一个空列表。无论哪种方法对代码更有意义,都应该确定对代码进行编码的方式。