首页 > 解决方案 > 增加一个键的值?

问题描述

我正在尝试这样做:

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

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

知道如何增加字典中键的值吗?

标签: python

解决方案


问题是它'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())

推荐阅读