python - 使用 for 循环创建字典(python)
问题描述
cols = 'ABC'
ind = range(3)
value=[]
dic = {}
for c in cols:
for i in ind:
value.append(str(c) + str(i))
dic[c] = value
print(dic)
输出:
{'A': ['A0', 'A1', 'A2', 'B0', 'B1', 'B2', 'C0', 'C1', 'C2'], 'B': ['A0', 'A1', 'A2', 'B0', 'B1', 'B2', 'C0', 'C1', 'C2'], 'C': ['A0', 'A1', 'A2', 'B0', 'B1', 'B2', 'C0', 'C1', 'C2']}
为什么我得到上述输出?
虽然我希望输出像
输出:
{'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2'], 'C': ['C0', 'C1', 'C2']}
解决方案
因为您对每个值都使用了相同的对象value
。
您应该value = []
在for c in cols:
块中插入,
但这里是更 Pythonic 的方式:
cols = 'ABC'
ind = range(3)
dic = {
c: [c + str(i) for i in ind]
for c in cols
}
print(dic)
输出:
{'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2'], 'C': ['C0', 'C1', 'C2']}
推荐阅读
- node.js - 如何在 Express JS 中通过重定向发送回数据
- c# - 用 C# 检查数据表的值
- python - 您可以将字符串列表传递给 AWS Lambda 函数吗?
- javascript - 当有多个方法时,return 语句中的操作顺序是什么?
- python - 为什么我不能向 Django 中的对象添加多对多关系?
- swift - api返回的数据总是nil?
- c++ - 在 z 之后循环回到字母表的开头
- c - 将函数传递给函数 C
- linux - 为什么用户可以使用 passwd 更改他们的密码,即使他们不能直接写入 /etc/shadow 文件?
- javafx - 如何在 JavaFX 中获取详细的打印机信息