首页 > 解决方案 > 使用 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']}

标签: python

解决方案


因为您对每个值都使用了相同的对象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']}

推荐阅读