使用列表列表遍历字典

时间:2020-07-07 09:08:17

标签: python list loops dictionary

你好,我有列表样本和字典的列表

sample=[[0,0,1440,1440],[3,23040,1440,24480]]

machine_to_intervals[0].append(model.NewIntervalVar(0,0 ,0 , 'week'))

所需的输出是

machine_to_intervals[0].append(model.NewIntervalVar(0,1440 ,1440 , 'week'))
machine_to_intervals[3].append(model.NewIntervalVar(23040,1440 ,24880 , 'week'))

我尝试了以下方法

sample=[[0,0,1440,1440],[3,23040,1440,24480]]
machine_to_intervals={}

for list in sample:
    machine_to_intervals[sample[0]].append(model.NewIntervalVar(sample[1], sample[2], sample[3],'week'))

但低于错误

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-7588d30dcdef> in <module>
      3 
      4 for list in sample:
----> 5     machine_to_intervals[sample[0]].append(model.NewIntervalVar(sample[1], sample[2], sample[3], 'week'))
      6 
TypeError: unhashable type: 'list'

2 个答案:

答案 0 :(得分:1)

您的sample列表是二维的,因此您需要在两个维度上进行迭代/索引。您似乎在尝试的道路上步入了正确的轨道,但是您应该索引list(来自for list in sample语句)。

sample的for循环中替换list引用,它应该可以工作。

此外,仅供参考,将变量命名为python对象类型(例如list)也不是一个好习惯。最好将其重命名为其他名称,例如:

for data in sample:
    machine_to_intervals[data[0]].append(model.NewIntervalVar(data[1], data[2], data[3],'week'))

答案 1 :(得分:0)

sample是一个列表列表,您想创建一个字典machine_to_intervals,其中的条目由sample的内部列表给出,键是第一个元素,值是由其他3个元素构成。因此,您可以执行以下操作:

machine_to_intervals = { x[0]: model.NewIntervalVar(x[1], x[2], x[3], 'week') for x in sample }