簡體   English   中英

遍歷Python字典

[英]Looping Through Python Dictionary

我正在嘗試遍歷字典並追加到字符串,這是代碼:

mylist= {'name':'james', 'age': '23', 'time': 'next'}
myquery = "select * from players where"
for k, v in mylist.items(): 
    myquery += "%s=%s and" % (k, v),

print myquery

這是在主表中打印'select * from maintable where age=23 and name=jame and time=next and'我的問題是結果的末尾有一個'and'。

我如何在沒有最后一個和的情況下運行for循環?

任何幫助,將不勝感激。

使用str.join()方法將字符串與' and '分隔符連接在一起:

myquery = "select * from players where {}".format(
    ' and '.join('{}={}'.format(k, v) for k, v in mylist.iteritems()))

演示:

>>> mylist= {'name':'james', 'age': '23', 'time': 'next'}
>>> "select * from players where {}".format(
...     ' and '.join('{}={}'.format(k, v) for k, v in mylist.iteritems()))
'select * from players where age=23 and name=james and time=next'

但是,看起來好像您正在構建SQL查詢。 在這種情況下,請勿插值,而應使用SQL參數:

myquery = "select * from players where {}".format(
    ' and '.join('{}=?'.format(k) for k in mylist))

然后使用cursor.execute(myquery, mylist.values())將參數傳遞給數據庫適配器。

檢查數據庫適配器使用什么格式; 有些使用%s (C sprintf樣式),而另一些使用? 作為占位符。

在for循環的末尾添加此語句,該語句從查詢語句中刪除and。

if myquery.endswith('and'):
   myquery = myquery[:-3]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM