我可能理解错了,但看看 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() 对象可以直接提供的内容的更详细的方式。
