在Python中添加字典时是否可以连接值?

时间:2018-09-19 13:22:31

标签: python python-3.x

dictionary.setdefault(key, []).append(somelist)

我不想将列表附加到某个键的值上,而是希望在循环中将字符串连接到我的值上。因此,每次迭代,键都将映射到已与新字符串连接在一起的不同值。我该怎么办?

4 个答案:

答案 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