2013-02-15 9 views

Odpowiedz

17

Można użyć tutaj string.ascii_lowercase i dict zrozumieniem.

In [4]: from string import ascii_lowercase as al 

dla Pythona 2.7+:

In [5]: dic = {x:i for i, x in enumerate(al, 1)} 

dla Pythona 2.6 lub starszej:

In [7]: dic = dict((y, x) for x, y in enumerate(al, 1)) 
+0

dziękuję bardzo! – Ris

+1

wah .............. –

+0

Jak skrócić alfabet, powiedzmy, mając tylko 10 liter? – Sigur

6
aDict = dict(zip('abcdefghijklmnopqrstuvwxyz', range(1, 27))) 

Albo zamiast ciężkiej kodowania alfabetu:

import string 
aDict = dict(zip(string.ascii_lowercase, range(1, 27))) 
+2

Jeśli nie zamierzamy hardcode alfabetu, sugeruję nie hardcoding jego długość, skompresowanie przed 'itertools.count (1)' lub 'zakresie (1, 1 + len (string.ascii_lowercase)) '. – pilcrow

+0

świetny sposób, aby to zrobić .. dzięki – Ris

2

Spróbuj tego, to działa w Pythonie 2.6 i starsze:

from string import ascii_lowercase 
d = {} 
for i, c in enumerate(ascii_lowercase, 1): 
    d[c] = i 

Jeśli używasz Pythona w wersji 2.7 lub nowszej, możesz użyć numeru dictionary comprehension:

d = {c : i for i, c in enumerate(ascii_lowercase, 1)} 
0
dict([(chr(i),i-96) for i in range(97,123)]) 

Ale lubię metodę @Ashwini Chaudhary za: wydaje się o wiele czystsze.

1

można znaleźć wartość ASCII postać używająca ord() funkcję, i na odwrót jest chr():

>>> ord('a') 
97 

Następnie można utworzyć słownik z wartości ASCII w następujący sposób:

for i in range(97, 97+26): 
    x[chr(i)] = i - 96 
1

Python 2.7 i nowsze wersje:

import string 

letters = {k: v for v, k in enumerate(string.ascii_lowercase, 1)} 

Python 2,6 i poniżej:

import string 

letters = dict((k, v) for v, k in enumerate(string.ascii_lowercase, 1)) 
+0

Czy to nie jest odpowiedź @ Ashwiniego? [Zdarza mi się cały czas.] – DSM

+0

@ DSM Dosyć ... zawsze będzie kilka odpowiedzi na dupe lub near-dupe na coś takiego. Lubię wyobrażać sobie, jak wszyscy wściekle piszą, żeby tam dotrzeć :-) Właściwie, myślę, że dla tego rodzaju pytania jest to przydatne; dla niedoświadczonych czytelników jest jasne, że są to idiomatyczne rozwiązania, a które ... nie są. –

Powiązane problemy