无法在字典中迭代元组

时间:2017-12-13 00:28:35

标签: python python-2.7 dictionary tuples gurobi

所以这就是我如何制作st

st = {}
cursor.execute('select * from store limit 6')
for row in cursor.fetchall():
    st[row[0]] = row[0], row[1] 

这是一个简单的方法,可以看到我如何尝试获取元组的第一个元素:

for i in len(st):
    print st[i][0]

它告诉我type "int" is not iterable

我实际上试图使用它的地方就在这里:

costtotal = m.addVars(st[i][0], dc[i][0], obj=mileage[i,j], name="costtotal")

但它一直告诉我长对象在那里不可迭代。这是gurobi代码的一部分,用于迭代地为优化模型制定约束。我试图通过使用st的值的第一个元素作为变量名来制作它们。

st的值只是数字。简单的循环演示了我的问题,没有必要得到m.addVars()的语法来理解我不会想到的问题。

2 个答案:

答案 0 :(得分:2)

(len)函数返回一个表示集合长度的整数。你需要range()函数:

for i in range(len(st)):
    print(st[i][0])

答案 1 :(得分:0)

for i in len(st):

你正试图迭代一个int(len()返回值),正如它所说的那样。

并且int不是可迭代对象。

也许你的意思是:

for i in st.items():
    print(i[0])

for i in st.items():
    print(i[1])

取决于您是否需要密钥或值?

您也可以直接迭代st.keys()st.values()