增加钥匙的价值?

时间:2020-08-19 02:04:17

标签: python

我正在尝试这样做:

i = 1
for item in cart:
    data_ps['itemId' + i] = item
    i += 1

但是Python给我返回了一个错误:can only concatenate str (not "int") to str.

有什么主意如何增加字典中键的值?

3 个答案:

答案 0 :(得分:1)

问题在于'itemId'是一个字符串,i是一个整数,如果没有某种形式的操纵,例如'itemId' + str(i),就无法添加它们。

如果您使用的是相对较新的Python版本(3.6或更高版本),f-strings提供了一种执行此操作的好方法(a)

i = 1
for item in cart:
    data_ps[f"itemId{i}"] = item
    i += 1

但是,由于无论如何看来您都是从1开始的,因此您很有可能每次都从头开始创建字典data_ps而不是添加字典。如果是 情况,则可以使用字典理解以单行代码的方式执行此操作(下面的第二行):

>>> cart = ["apple", "banana", "carrot"]
>>> data_ps = {f"itemId{i+1}":cart[i] for i in range(len(cart))}
>>> print(data_ps)
{'itemId1': 'apple', 'itemId2': 'banana', 'itemId3': 'carrot'}

(a)与字符串连接和string.format()相比,它们的优势在于它们读起来更好:将放入字符串的项目就在其中字符串本身,在该位置。将下面的内容与以下内容进行对比,您将会明白我的意思:

tmpFile = f"/tmp/{user}_tmp_{os.getpid()}_dir"

tmpFile = "/tmp/" + user + "_tmp_" + os.getpid() + "_dir"
tmpFile = "/tmp/{}_tmp_{}_dir",format(user, os.getpid())

答案 1 :(得分:0)

您可以尝试

i=1
for item in cart:
    data_ps['itemId' + str(i)] = item
    i += 1

答案 2 :(得分:0)

这也是您可以使用的另一种方式,如果您对C / C ++更加熟悉,则可以提供帮助:

i = 1
for item in cart:
    data_ps["itemId%d" % i] = item
    i += 1

%d 表示在此位置插入整数值