Skip to main content
 首页 » 编程设计

python之向 Python 字典中添加项目

2025年05月04日18bjzhanghao

我可能理解错了,但看看 O'Reilly 在“学习 Python”中找到的示例,我尝试执行以下操作:

>>> d={} 
>>> d['h']='GG' 
>>> d['f']='JJ' 
>>> d['h']='PP' 
>>> print d 
{'h': 'PP', 'f': 'JJ'} 

现在 'key' 'h' 有两个条目 'GG' 和 'PP' 它只有最后一个条目, 最后一个替换第一个。 我希望两者都在同一个 key 中。

>>> d['h']+='RR' 
>>> print d 
{'h': 'PPRR', 'f': 'JJ'} 

同样这不起作用,我想要的不是连接的字符串,而是逗号分隔的整体。

我很困惑为什么这不起作用。

请您参考如下方法:

collections.defaultdict() 很好地处理了您的用例改为输入:

>>> from collections import defaultdict 
>>> d = defaultdict(list) 
>>> d['h'].append('GG') 
>>> d['f'].append('JJ') 
>>> d['h'].append('PP') 
>>> d 
defaultdict(<type 'list'>, {'h': ['GG', 'PP'], 'f': ['JJ']}) 

常规字典将一个键映射到一个值,如果您希望该值是一个列表,那么您应该将其设为列表,然后附加到列表中。

您必须使用defaultdict() 对象,您始终可以使您的值显式列表:

>>> d = {} 
>>> d['h'] = ['GG'] 
>>> d['f'] = ['JJ'] 
>>> d['h'].append('PP') 
>>> print d 
{'h': ['GG', 'PP'], 'f': ['JJ']} 

但现在您需要明确地创建列表。后一个问题可以通过使用 dict.setdefault() 再次规避:

>>> d = {} 
>>> d.setdefault('h', []).append('GG') 
>>> d.setdefault('f', []).append('JJ') 
>>> d.setdefault('h', []).append('PP') 

这只是使用 defaultdict() 对象可以直接提供的内容的更详细的方式。