Самый быстрый способ сделать DICT одиночную строку через запятую - PullRequest
1 голос
/ 28 апреля 2010

У меня есть список

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

и я хотел бы превратить это в одну строку:

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

Какой самый эффективный способ сделать это? Спасибо!

Ответы [ 2 ]

9 голосов
/ 28 апреля 2010
' OR '.join("uid = '%s'" % u for u in uids)

Это вызывает функцию join для строки ' OR ', которая берет переданный список и помещает строку между каждым элементом, а затем объединяет их все вместе. (Используется для помещения OR между каждой парой ключ = вал.)

Часть внутри () - это понимание, которое говорит "для каждого u в списке uids, сгенерируйте значение, равное строке "uid = '%s'", но подставьте в u вместо %s маркер ".

2 голосов
/ 28 апреля 2010

Если - как упоминают Майк и Томас в комментариях - вам это нужно для запроса к базе данных, вы должны воспользоваться советом Томаса и использовать 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()
# ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...