转换python字典中的2个列表

2024-10-02 08:28:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过sqlite3获得了一长串信息。我创建了两个列表,第一个由第一个元素组成(Vercelli,Vercelli ecc)。第二个列表由秒元素组成(viale dell'Aeronautica、piazza Cesare Battisti)。我想创建一个字典,将第一个列表的元素作为键连接起来,将第二个列表的元素作为值连接起来。但我还想创建一个对值进行分组的字典​​在单个键下(请参见下面的代码示例)。当我尝试python时,它会向我显示只有最后一个值的键。如果有人试图帮助我,我会非常高兴

conntta = sqlite3.connect("Database.db")
cursortta = conntt.cursor()
sqltta = cursortt.execute("select np,id from orari")




#Sqlite3

    ('Vercelli', "viale dell'Aeronautica")
    ('Vercelli', 'piazza Cesare Battisti')
    ('Vercelli', 'Autostazione corso Gastaldi')
    ('Caresanablot', 'SP230/via Aldo Moro')
    ('Quinto v.se', 'Regione Bivio')
    ('Oldenico', 'SS594 (peso pubblico)')
    ('Albano', 'piazza Roma (chiesa)')
    ('Greggio', 'piazza Roma (posta)')
    ('Arborio', 'corso Umberto I (chiesa)')
    ('Ghislarengo', 'piazza Umberto I (posta)')
    ('Lenta', 'via XXV Luglio (municipio)')
    ('Gattinara', 'corso Vercelli (ospedale)')
    ('Gattinara', 'piazza Mazzini (stazione)')
    ('Gattinara', 'via Volta (ist.Ragion.-Geom.)')
    ('Romagnano', 'SS142 Ponte Sesia')
    ('Romagnano', 'via XXV Luglio')
    ('Serravalle', 'Vintebbio (fr.chiesa)')
    ('Serravalle', 'Piane via dei Ceri/S.Giacomo')
    ('Serravalle', 'p.za I Maggio (scuole)')
    ('Serravalle', 'Bornate Corso Valsesia')
    ('Borgosesia', 'Agnona (ITIS)')
    ('Borgosesia', 'San Rocco c.so Vercelli')
    ('Borgosesia', "v.le Duca d'Aosta (IPSIA)")
    ('Borgoseisa', 'via Antongini')
    ('Borgosesia', 'v.le Varallo/p.le Milanaccio')
    ('Borgosesia', 'Centro sportivo Milanaccio')
    ('Quarona', 'piazza Combattenti')
    ('Quarona', 'Doccio (scuole)')
    ('Varallo', 'Roccapietra via Varalli (posta)')
    ('Varallo', 'piazza Marconi (stazione)')
    ('Varallo', 'piazza Marconi (stazione)')
    ('Varallo', 'Istituto Caimi')
    ('Varallo', 'Istituto Alberghiero')
    ('Varallo', 'piazza Marconi (stazione)')
    ('Varallo', 'Valmaggia bivio Cantone')
    ('Vocca', 'Chiesa (fr.municipio)')
    ('Balmuccia', 'bivio Rimasco')
    ('Balmuccia', 'via Roma (scuole)')
    ('Scopa', 'Salterana (fr. posta)')
    ('Scopello', 'piazzale (bivio per Mera)')
    ('Pila', 'SS299/via Centro')
    ('Piode', 'SS299 via Umberto I')
    ('Campertogno', 'SS299 piazzale (fr.posta)')
    ('Mollia', 'SS299 bivio Rusa')
    ('Riva Valdobbia', 'Piazza Mercato')
    ('Alagna', 'piazzale (lungo Sesia)')

list1 = []
list2 = []
for cd in sqltta:
    list1.append(cd[0])
    list2.append(cd[1])


#Here I can't go further

电流输出:

{'Vercelli' : 'Autostazione corso Gastaldi', 'Caresanablot', 'SP230/via Aldo Moro'ecc... } #Here the other values ​​of vercelli are missing

(我想要的)例子:

{'Vercelli': 'viale dell'Aeronautica', 'piazza Cesare Battisti', 'Autostazione corso Gastaldi  ecc}

Tags: 元素列表frviaeccpiazzacorsovercelli
2条回答

只需将id值添加到由np值索引的列表中,即可构建字典:

result = {}
sqltta = cursortt.execute("select np,id from orari")
for np, id in sqltta:
    if np in result:
        result['np'].append(id)
    else:
        resul['np'] = [id]
conntta = sqlite3.connect("Database.db")
cursortta = conntt.cursor()
sqltta = cursortt.execute("select np,id from orari")

your_first_dict = dict(sqltta) # yes, that's all that is needed!

from collections import defaultdict
your_second_dict = defaultdict(list)
for k,v in sqltta:
    your_second_dict[k].append(v)

请注意your_first_dict将只包含给定键的最后一个条目——这是dict类型的本质,但不能有多个具有相同键的条目your_second_dict将列表作为值

相关问题 更多 >

    热门问题