1

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

我试过:

d1[key].append(value)

但 Python 说:

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

我需要类似的东西:{a:[b,c,d,e],b:[t,r,s,z]....}

我能做什么?

提前致谢。

4

4 回答 4

5

您可以使用collections.defaultdict

>>> from collections import defaultdict
>>>
>>> d = defaultdict(list)
>>> d['key'].append(5)
>>> d
defaultdict(<type 'list'>, {'key': [5]})
>>> dict(d)
{'key': [5]}
于 2013-08-24T17:38:12.307 回答
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!')
于 2013-08-24T17:37:48.873 回答
2

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

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

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

d1[key] = value1

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

d1[key] = [value1]

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

于 2013-08-24T17:41:45.220 回答
0

您需要在追加之前dict创建as a的元素。list

d1[key] = []
d1[key].append(value)
于 2013-08-24T17:38:22.653 回答