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

Python 使dict成为单个逗号分隔字符串的最快方法,python,string,Python,String,我有一份清单 uids: ['1234','4321','1111'] 我想把它转换成一个字符串: "uid = '1234' OR uid = '4321' OR uid = '1111'" 最有效的方法是什么? 谢谢 这将调用字符串或“上的join函数,该函数获取传入的列表并将字符串放在每个元素之间,然后将它们全部连接在一起。(用于将ORs置于每个key=val对之间。) ()中的部分是一个理解,它说“对于uid列表中的每个u,生成一个等于字符串“uid='%s'”,但在u中替换%s标

我有一份清单

uids: ['1234','4321','1111'] 
我想把它转换成一个字符串:

"uid = '1234' OR uid = '4321' OR uid = '1111'"
最有效的方法是什么? 谢谢

这将调用字符串
或“
上的
join
函数,该函数获取传入的列表并将字符串放在每个元素之间,然后将它们全部连接在一起。(用于将ORs置于每个key=val对之间。)

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

这将调用字符串
或“
上的
join
函数,该函数获取传入的列表并将字符串放在每个元素之间,然后将它们全部连接在一起。(用于将ORs置于每个key=val对之间。)


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

如果正如Mike和Thomas在评论中提到的那样,您需要将其用于数据库查询,则应采纳Thomas的建议并使用

以下是两个例子:

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()
# ...

如果正如Mike和Thomas在评论中提到的,您需要将其用于数据库查询,那么您应该采纳Thomas的建议并使用它

以下是两个例子:

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()
# ...

我认为没有比这更好的了+1.请记住,如果这是针对SQL语句的,更好的方法是使用DB-API引号:将“uid=?”(对于
qmark
paramstyle)放在SQL语句中,每个uid一个,由或如上所述分隔,并将uid列表(以及任何其他参数)传递给
execute
方法。这样你就不必担心引用的话是否正确了。@Thomas:同意。在我发现参数化查询的那天,我跳到了它们身上,再也没有回头看一眼。我认为没有比这更好的了+1.请记住,如果这是针对SQL语句的,更好的方法是使用DB-API引号:将“uid=?”(对于
qmark
paramstyle)放在SQL语句中,每个uid一个,由或如上所述分隔,并将uid列表(以及任何其他参数)传递给
execute
方法。这样你就不必担心引用的话是否正确了。@Thomas:同意。我发现参数化查询的那天,我跳到它们身上,再也没有回头看。这是用来进行SQL查询的吗?这是用来进行SQL查询的吗?