Python的append()只允许列表中的唯一项?

2024-07-08 11:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

python文档意味着列表中可以存在重复项,assignmnet支持这一点:list=[“word1”,“word1”]。但是,如果Python的append()已经在列表中,那么它似乎没有添加项。我是在这里遗漏了什么,还是这是一种故意的set()行为?

>> d = {}
>> d["word1"] = 1
>> d["word2"] = 2
>> d["word2"] = 3

>> vocab = []
>> for word,freq in d.iteritems():
>> ...  vocab.append(word)

>> for item in vocab:
>> ...  print item

返回:

word1 
word2

第二个词2在哪里?


Tags: in文档列表foritemlistwordfreq
3条回答

没有第二个"word2",因为dicts每个键只有一个条目。这是哈希表支持的映射的常见行为。

请注意,如果您只需要dict的键,请使用dict.keys()

没有第二个词。

>>> d = {}
>>> d["word1"] = 1
>>> d["word2"] = 2
>>> d
{'word1': 1, 'word2': 2}
>>> d["word2"] = 3
>>> d
{'word1': 1, 'word2': 3}

字典将特定键映射到特定值。如果您希望一个键对应多个值,通常会使用一个列表,而defaultdict非常方便:

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d["word1"].append(1)
>>> d["word2"].append(2)
>>> d["word2"].append(3)
>>> d
defaultdict(<type 'list'>, {'word1': [1], 'word2': [2, 3]})

你先把这些词编入词典。字典不接受重复项,因此当您在字典中输入同一个键两次时,第二个条目将覆盖第一个条目。然后,当你遍历字典中的键时,你不会得到重复的。

>>> d = {}
>>> d['word1'] = 1
>>> d['word2'] = 2
>>> d['word2'] = 3
>>> print d
{'word1': 1, 'word2': 3}

在包含重复项的列表上迭代的工作方式与预期的一样:

>>> words = ['word1', 'word2', 'word2']
>>> newlist = []
>>> for word in words:
...     newlist.append(word)
... 
>>> newlist
['word1', 'word2', 'word2']

相关问题 更多 >

    热门问题