2017-10-06 1 views
0

J'ai donc l'alphabet, et je veux créer un dictionnaire où chaque caractère de l'alphabet est apparié avec son inverse, c'est à dire est associé à z, b avec y, etc. J'essaye d'employer la compréhension de liste pour créer ledit dictionnaire. Mon code comme suit:Cadre deux non-imbriqués pour les boucles dans la compréhension de la liste

{x:y for x in alphabet for y in alphabet[::-1]}

Au lieu de itérer x et y en même temps il niche x dans les y. Quelle est la bonne façon de commander cela?

Répondre

2

Vous pouvez utiliser les éléments suivants:

{x:y for (x, y) in zip(alphabet, alphabet[::-1])} 

Voici un exemple de travail:

In [28]: import string 

In [29]: alphabet = string.ascii_lowercase 

In [30]: {x:y for (x, y) in zip(alphabet, alphabet[::-1])} 
Out[30]: 
{'a': 'z', 
'b': 'y', 
'c': 'x', 
'd': 'w', 
'e': 'v', 
'f': 'u', 
'g': 't', 
'h': 's', 
'i': 'r', 
'j': 'q', 
'k': 'p', 
'l': 'o', 
'm': 'n', 
'n': 'm', 
'o': 'l', 
'p': 'k', 
'q': 'j', 
'r': 'i', 
's': 'h', 
't': 'g', 
'u': 'f', 
'v': 'e', 
'w': 'd', 
'x': 'c', 
'y': 'b', 
'z': 'a'} 
0

Essayez

dict(zip(alphabet, alphabet[::-1])). 

sortie doit être quelque chose comme

>>> sorted(dict(zip(alpha, alpha[::-1])).items()) 
[('a', 'z'), ('b', 'y'), ('c', 'x'), ('d', 'w'), ('e', 'v'), ('f', 'u'), ('g', 't'), ('h', 's'), ('i', 'r'), ('j', 'q'), ('k', 'p'), ('l', 'o'), ('m', 'n'), ('n', 'm'), ('o', 'l'), ('p', 'k'), ('q', 'j'), ('r', 'i'), ('s', 'h'), ('t', 'g'), ('u', 'f'), ('v', 'e'), ('w', 'd'), ('x', 'c'), ('y', 'b'), ('z', 'a')] 
+0

'dict (X) .items()' est à peu près la même chose que 'X' dans ce cas. – mkrieger1

-1

dict(zip(alphabet, alphabet[::-1])). La production devrait être quelque chose comme

>>> sorted(dict(zip(alpha, alpha[::-1])).items()) 
[('a', 'z'), ('b', 'y'), ('c', 'x'), ('d', 'w'), ('e', 'v'), ('f', 'u'), ('g', 't'), ('h', 's'), ('i', 'r'), ('j', 'q'), ('k', 'p'), ('l', 'o'), ('m', 'n'), ('n', 'm'), ('o', 'l'), ('p', 'k'), ('q', 'j'), ('r', 'i'), ('s', 'h'), ('t', 'g'), ('u', 'f'), ('v', 'e'), ('w', 'd'), ('x', 'c'), ('y', 'b'), ('z', 'a')] 
+0

Cela plagie juste l'autre réponse qui est venu avant. Je regrette d'avoir édité cela pour mieux paraître. – mkrieger1