使用for循环创建字典(python) cols='ABC' ind=范围(3) 值=[] dic={} 对于cols中的c: 我在印度: 附加值(str(c)+str(i)) dic[c]=数值 打印(dic)

使用for循环创建字典(python) cols='ABC' ind=范围(3) 值=[] dic={} 对于cols中的c: 我在印度: 附加值(str(c)+str(i)) dic[c]=数值 打印(dic),python,Python,输出: {'A':['A0','A1','A2','B0','B1','B2','C0','C1','C2'],'B':['A0','A1','A2','A2','C0','C1','C2'],'C':['A0','A1','A2','B0','B1 B2','C1','C2'] 为什么我会得到上面的输出 而我希望输出像 输出: {'A':['A0','A1','A2'],'B':['B0','B1','B2'],'C':['C0','C1','C2']} 因为您对每个值都使用了相同的对象值。

输出:

{'A':['A0','A1','A2','B0','B1','B2','C0','C1','C2'],'B':['A0','A1','A2','A2','C0','C1','C2'],'C':['A0','A1','A2','B0','B1 B2','C1','C2']
为什么我会得到上面的输出

而我希望输出像

输出:

{'A':['A0','A1','A2'],'B':['B0','B1','B2'],'C':['C0','C1','C2']}

因为您对每个值都使用了相同的对象
值。
您应该在c的
列中插入
value=[]

但这里有一种更为通灵的方式:

cols='ABC'
ind=范围(3)
dic={
c:[c+str(i)代表ind中的i]
对于c,在cols中
}
打印(dic)
输出:

{'A':['A0','A1','A2'],'B':['B0','B1','B2'],'C':['C0','C1','C2']}

这很简单,每次迭代后都必须重置数组

cols = 'ABC'
ind = range(3)
dic = {}
for c in cols:
    value=[]
    for i in ind:
        value.append(str(c) + str(i))
    dic[c] = value
print(dic) 
结果:

输出:

{'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2'], 'C': ['C0', 'C1', 'C2']}
def make_df(cols,ind):
#创建一个数据帧
data={c:[str(c)+str(i)for i in ind]for c in cols}
返回pd.DataFrame(数据,索引)
#示例数据帧
制造df('ABC',范围(3))

谢谢你回答这个问题。我正在学习列表和字典理解,所以我试着先用老方法编写代码。感谢您突出显示重置值。
cols = 'ABC'
dic = {c:[c + str(x) for x in range(3)] for c in cols}

print(dic) 
{'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2'], 'C': ['C0', 'C1', 'C2']}