我有类似的东西(在我的iPython笔记本中,没有像numpy这样的特殊命名空间 - 我应该吗?):
map1 = (("A",1,2),("B",4,5),("C",0,0))
print len(map1)
for i in range(len(map1)):
name = map1[i][0]
ID = map1[i][1]
parent_ID = map1[i][2]
print name, ID, parent_ID
statement= "INSERT INTO map VALUES (" + name + "," + `ID` + "," + `parent_ID` + ")"
print statement
我正在寻求一种更优雅的方式来将单元组元素提取为oneliner或inliner。 (花了我很长时间才弄明白"`"做toString()转换)
答案 0 :(得分:1)
Python可以多分配,并在循环中提取。
for name, item_id, parent_id in map1:
print name, item_id, parent_id
statement= "INSERT INTO map VALUES (" + name + "," + `item_id` + "," + `parent_id` + ")"
print statement
如果你觉得琴弦部分缺乏优雅,有几种方法可以解决这个问题。首先 - 您始终可以使用str(item_id)
来获取字符串。
您还可以使用字符串格式:
statement= "INSERT INTO map VALUES (%s, %d, %d)" % (name, item_id, parent_id)
最后说明 - python约定建议使用变量名称的小写(如果打算将其用作const值,则使用大写)。小写的名称“id”是内置的 - 不要使用它,因此item_id
。
for name, item_id, parent_id in map1:
print name, item_id, parent_id
statement= "INSERT INTO map VALUES (%s, %d, %d)" % (name, item_id, parent_id)
print statement
你甚至可以更进一步,使用列表理解来完成所有这一切:
statements = ["INSERT INTO map VALUES (%s, %d, %d)" % (name, item_id, parent_id) for name, item_id, parent_id in map1]
您现在可以打印这些语句的数组,或者在其他地方使用。