创建列表列表并在for Loop中添加到字典

时间:2019-04-19 09:39:28

标签: python list dictionary for-loop

我想创建一个循环以生成一个字典,其中每个键都有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)和字典键的值。

3 个答案:

答案 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。如果要使用循环内指定的keyvalue进行迭代(就像在循环中那样),则应迭代dict项,因为通常的迭代是通过dict键进行迭代的。因此,您应该将行更改为:

for key, value in dict_of_lists.items():

(PS:最后一行中有未指定的itemprice,我想您是在此代码块之前指定了它们)