dictionary.setdefault(key, []).append(somelist)
我不想将列表附加到某个键的值上,而是希望在循环中将字符串连接到我的值上。因此,每次迭代,键都将映射到已与新字符串连接在一起的不同值。我该怎么办?
答案 0 :(得分:5)
str
的值是不可变的,因此您不能将字符串连接到现有的值。您只能用由旧字符串组成的新字符串替换原始字符串。 defaultdict
简化了这个过程。
>>> d = collections.defaultdict(str)
>>> d["foo"] += "bar"
>>> d["foo"] += "baz"
>>> d["foo"]
'barbaz'
setdefault
在这里不起作用,因为您不能指定setdefault
的返回值
>>> d.setdefault("foo", "") += "bar"
File "<stdin>", line 1
SyntaxError: can't assign to function call
答案 1 :(得分:4)
将一个空字符串设置为默认值,并照常进行连接
from collections import defaultdict
d = defaultdict(str)
d['a'] += 'hello'
d['a'] += 'world'
print(d)
答案 2 :(得分:0)
我们能否获得所需的输出,以便更清楚地了解您的意思,根据我的阅读,您想将字符串连接为字典值?
dicta = {'vash': 'the'}
string = ' is concatenating'
lista = [' stampede', string]
for i in lista:
for k in dicta:
dicta[k] += i
print(dicta)
输出:
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 conc.py {'vash': 'the stampede is concatenating'}
答案 3 :(得分:-1)
您可以使用dict.get
方法代替空字符串的默认值:
dictionary[key] = dictionary.get(key, '') + some_string