使dict成为单个逗号分隔字符串的最快方法

时间:2010-04-27 23:38:06

标签: python string

我有一个

列表
uids: ['1234','4321','1111'] 

我想把它变成一个单独的字符串:

"uid = '1234' OR uid = '4321' OR uid = '1111'"

最有效的方法是什么? 谢谢!

2 个答案:

答案 0 :(得分:9)

' OR '.join("uid = '%s'" % u for u in uids)

这将调用字符串join上的' OR '函数,它接受传入的列表并将字符串放在每个元素之间,然后将它们连接在一起。 (用于将OR放在每个key = val对之间。)

()中的部分是一个理解,说“对于u列表中的每个uids,生成一个等于字符串"uid = '%s'"的值,但替换为u代替%s标记“。

答案 1 :(得分:2)

如果正如迈克和托马斯在评论中提到的那样 - 你需要这个用于数据库查询,你应该听取托马斯的建议并使用the DB-API

以下是两个例子:

<强>的MySQL

import MySQLdb
conn = MySQLdb.connect(host='localhost', user='u', passwd='p', db='mydb')
curs = conn.cursor()
uids = [1234,4321,1111]
qry = ("""SELECT cheese 
            FROM cheeseshop 
           WHERE id IN (%s)""" % ','.join(['%s']*len(uids)))
# 'SELECT cheese FROM cheeseshop WHERE id IN (%s,%s,%s)'
curs.execute(qry, uids)
curs.fetchone()
# ...

<强> SQLite的

import sqlite3
conn = sqlite3.connect(':memory:')
curs = conn.cursor()
uids = [1234,4321,1111]
qry = ("""SELECT cheese 
            FROM cheeseshop 
           WHERE id IN (%s)""" % ','.join('?'*len(uids)))
# 'SELECT cheese FROM cheeseshop WHERE id IN (?,?,?)'
curs.execute(qry, uids)
curs.fetchone()
# ...