具有键的多个字符串值的字典

时间:2013-08-24 17:35:10

标签: python dictionary

我需要一个由很多键组成的字典,值必须是包含大量字符串的列表。 (在Python中)

我试过了:

d1[key].append(value)

但是Python说:

AttributeError: 'str' object has no attribute 'append'.

我需要这样的内容:{a:[b,c,d,e],b:[t,r,s,z]....}

我该怎么办?

提前感谢。

4 个答案:

答案 0 :(得分:4)

您可以使用collections.defaultdict

>>> from collections import defaultdict
>>>
>>> d = defaultdict(list)
>>> d['key'].append(5)
>>> d
defaultdict(<type 'list'>, {'key': [5]})
>>> dict(d)
{'key': [5]}

答案 1 :(得分:2)

试试这个:

d1['something'] = []
d1['something'].append('a string')
d1['something'].append('another string')
d1['another'] = []
d1['another'].append('woohoo!')

或者,使用defauldict

from collections import defaultdict

d1 = defaultdict(list)
d1['something'].append('a string')
d1['something'].append('another string')
d1['another'].append('woohoo!')

或者,使用setdefault

d1 = {}
d1.setdefault('something', []).append('a string')
d1.setdefault('something', []).append('another string')
d1.setdefault('another', []).append('woohoo!')

答案 2 :(得分:2)

如果您有列表字典,可以使用setdefault方法:

d1.setdefault(key, []).append(value)

但对我来说,看起来你有字符串字典,d1[key]给你字符串而不是列表。如果您尝试添加列表的第一个元素,则可能会发生这种情况:

d1[key] = value1

现在键key的字典值是字符串。 相反,试试:

d1[key] = [value1]

然后你可以调用append方法,因为d1 [key]是list

答案 3 :(得分:0)

您需要在追加之前将dict的元素创建为list

d1[key] = []
d1[key].append(value)