我想创建一个循环以生成一个字典,其中每个键都有5个具有三个值的列表。然后根据字典的键和列表的索引添加编辑列表2和3的最后一个值(因此,列表2和3)。
我尝试了以下代码,但收到错误消息:“无法解压缩不可迭代的int对象”
# Create dicitonairy with 6 empty lists
dict_of_lists = dict.fromkeys(range(0,6),[])
for key, value in dict_of_lists:
# Create 5 lists with the list number as the first value
for li in range(5):
dict_of_lists[key] = [li,0,0]
# Edit the last value of list 1 and 2 (index)
for wi in [1,2]:
dict_of_lists[wi][2] = item[wi]*price[key]
创建以下输出的最佳方法是什么?
{
0:[[0,0,0],[1,0,x],[2,0,x],[3,0,0],[4,0,0]]
1:[[0,0,0],[1,0,x],[2,0,x],[3,0,0],[4,0,0]]
2:[[0,0,0],[1,0,x],[2,0,x],[3,0,0],[4,0,0]]
3:[[0,0,0],[1,0,x],[2,0,x],[3,0,0],[4,0,0]]
4:[[0,0,0],[1,0,x],[2,0,x],[3,0,0],[4,0,0]]
5:[[0,0,0],[1,0,x],[2,0,x],[3,0,0],[4,0,0]]
}
其中x是基于其所在列表(1到5)和字典键的值。
答案 0 :(得分:1)
要遍历字典,您需要使用dict.items()
。
在您的情况下:
for key, value in dict_of_lists.items():
#code
答案 1 :(得分:1)
/usr/local/tomcat/logs/
输出:
dict_of_lists = dict.fromkeys(range(0,6),[])
for key, value in dict_of_lists.items():
# Create 5 lists with the list number as the first value
l = []
for li in range(5):
if li == 1 or li == 2:
# l.append([li, 0, li*key])
l.append([li, 0, 'x'])
else:
l.append([li,0,0])
dict_of_lists[key] = l
print (dict_of_lists)
答案 2 :(得分:0)
您错误地遍历了dict。如果要使用循环内指定的key
和value
进行迭代(就像在循环中那样),则应迭代dict项,因为通常的迭代是通过dict键进行迭代的。因此,您应该将行更改为:
for key, value in dict_of_lists.items():
(PS:最后一行中有未指定的item
和price
,我想您是在此代码块之前指定了它们)