簡體   English   中英

轉換 python 字典中的 2 個列表

[英]Convert 2 lists in a python dictionary

我通過 sqlite3 得到了一長串信息。 我創建了 2 個列表,第一個列表由第一個元素(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

當前 Output:

{'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}
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將列表作為值。

您可以通過將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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM