3

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

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

提前致谢

4

1 回答 1

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'])。你期望会发生什么?如果你使用普通的 dict and setdefault,这被认为是一个错误,所以它会引发KeyError. 如果您使用 a defaultdict,它将打印一个空列表。无论哪种方式对您的代码更有意义,都应该确定您的编码方式。

于 2012-06-01T04:13:16.677 回答