python - 增加一个键的值?
问题描述
我正在尝试这样做:
i = 1
for item in cart:
data_ps['itemId' + i] = item
i += 1
但是 Python 给我一个错误:can only concatenate str (not "int") to str.
知道如何增加字典中键的值吗?
解决方案
问题是它'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())
推荐阅读
- swift - 如何在 iPhone 文件夹中的文档应用程序中创建文件夹
- python - 本地 Azure Python:函数没有名为“pyodbc”的模块
- laravel - Laravel 请求验证不显示错误消息
- javascript - 更改日期选择器语言不起作用
- python - 为什么python不将任何内容写入字典?
- apache-kafka - Zookeeper:java.io.IOException:未找到快照,但有日志条目。东西坏了
- c - qsort 创建非特定数量的零
- c++ - 将 RGB 编码为 H.264
- django - 从令牌传递用户名以将用户名保存在模型中
- terminal - 如何在 Mac OS 上的终端中排除一行打印