我有一个我无法解决的嵌套列表问题。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