我有一個我無法解決的嵌套列表問題。Python:嵌套列表理解
first_list = cursor.execute('SELECT id, number, code FROM test').fetchall()
second_list = cursor.execute('SELECT key FROM test2').fetchall()
second_set = set(second_list)
results = []
for id, number, code in first_list:
name = [code]
for a in second_set:
if code.startswith(a[0]):
if a[0] not in name:
name.append(a[0])
results.append(tuple(name))
print (id, code, name)
這將產生一個輸出繼電器:
('1', '98', ['1', '2'])
('2', '12', ['1', '2', '3'])
我在想,最好的辦法就是做一個列表的理解是什麼,從而使輸出將是:
('1', '98', '1')
('1', '98', '2')
('2', '12', '1')
('2', '12', '2')
('2', '12', '3')
從不在輸出元組中包含'id',只在'print'語句中。這是由設計? –
注意,如果您從數據庫中選擇唯一的直線,您將獲得更好的性能。您將獲取更少的數據,同時也跳過了Python中唯一性的代價。就像做'cursor.execute('SELECT DISTINCT(key)FROM test2')一樣簡單。「。fetchall()' – zsquare
@zsquare謝謝。我想把它改爲一個集合是有點沒有意義的,當我可以在sql – user47467