Tworzę słownik Pythona w następujący sposób:
d= {i : chr(65+i) for i in range(4)}
Teraz wyjście z d
jest {0: "A", 1: "B", 2: "C", 3: "D"}
Mam listę kluczy, które chcę sprawdzić w następujący sposób:
l = [0, 1]
Teraz chcę utworzyć kolejną listę zawierającą wartości odpowiadające tym kluczom i chciałem się dowiedzieć, czy istnieje sposób, w jaki można to zrobić za pomocą listy lub poleceń dict.
Mogę zrobić coś w następujący sposób:
[x for x in d[0]]
Jednak nie wiem jak iterować nad wpisami na mojej liście w tym ustawieniu. Próbowałem:
[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
Odpowiedzi:
3 dla odpowiedzi № 1Chcesz powtórzyć l
, więc użyj for element in l
. Następnie poszukaj rzeczy w słowniku po lewej stronie, w wyrażeniu generującym wartość:
[d[element] for element in l]
Zwróć uwagę, że słownik odwzorowujący kolejne liczby całkowite zaczynające się od 0 do liter nie jest tak efektywny, możesz równie dobrze utworzyć listę:
num_to_letter = [chr(65 + i) for i in range(4)]
To wciąż jest mapowane 0
do "A"
, 1
do "B"
itp., ale bez etapu haszowania.