Vytváram pythonový slovník takto:
d= {i : chr(65+i) for i in range(4)}
Teraz výstup d
je {0: "A", 1: "B", 2: "C", 3: "D"}
Mám zoznam kľúčov, ktoré chcem vyhľadať takto:
l = [0, 1]
Teraz chcem urobiť ďalší zoznam, ktorý obsahuje hodnoty zodpovedajúce týmto kľúčom, a chcel som vedieť, či existuje pythonický spôsob, ako to urobiť pomocou porozumenia zoznamu alebo diktátu.
Môžem urobiť niečo takto:
[x for x in d[0]]
Neviem však, ako opakovať položky tohto zoznamu v tomto nastavení. Skúsil som:
[x for x in d[a] for a in l] # name "a" not defined
[x for x in d[for a in l]] # invalid syntax
odpovede:
3 pre odpoveď č. 1Chcete opakovať l
, tak použite for element in l
, Potom vyhľadajte obsah vo svojom slovníku na ľavej strane vo výraze produkujúcom hodnotu:
[d[element] for element in l]
Všimnite si, že slovník mapujúci po sebe idúce celé čísla začínajúce od 0 po písmená nie je tak efektívny; môžete tiež vytvoriť zoznam:
num_to_letter = [chr(65 + i) for i in range(4)]
To stále mapuje 0
na "A"
, 1
na "B"
atď., ale bez kroku hashovania.