Bir cypher yazıyorum ve alfabedeki her harfe alphabet_dictionary = {'a': 0, 'b': 1, 'c': 2,... etc.}
sayısal değerler atadım.Bir python 3 sözlüğünde bir değer kullanarak nasıl anahtar bulunur?
Önce harfi message
numarasına dönüştürüyorum, bazı aritmetik işlemleri yapın ve bu sayıları code
adında bir değişkene kaydedin.
Onları harflere dönüştürmek istiyorum.
Şimdiye kadar var:
for number in code:
for letter, value in alphabet_dictionary.items():
if value == number:
coded_message.append(letter)
Bu çalışır. coded_message
listemdeki doğru kodlanmış mesajla bitiriyorum. Daha iyi veya daha verimli bir şey var mı?
Neden bunu tek bir satırda yapamıyorum? İlk kullanarak çalıştı:
for number in code:
coded_message.append(letter for letter, value in alphabet_dictionary.items() if value == number)
ama bu sadece örneğin bireysel karakterler için bellek ayırma adresini ekler:
`[<generator object <genexpr> at 0x1011bb240>, <generator object <genexpr> at 0x1011bb1f8>, <generator object <genexpr> at 0x1011bb288>, <generator object <genexpr> at 0x1011bb2d0>, <generator object <genexpr> at 0x1011bb318>, <generator object <genexpr> at 0x1011bb360>, <generator object <genexpr> at 0x1011bb3a8>]'
neden oluyor?
Olası yinelenen: kod çözme için
68673/inverse-dictionary-lookup-python) –
'coded_message' değerini kullanabileceğiniz tam olarak bir eşleşme olacağından kesinlikle eminseniz.append (sonraki) (value == sayı ise)(), letter = ifadesinin sonraki (ilk) değerini almak için [inverse dictionary lookup - Python] 'un kabul edilen yanıtı olarak alfabetik_dictionary.items() öğesindeki değeri ekleyin. : //stackoverflow.com/questions/2568673/inverse-dictionary-lookup-python) durumları: sözlüğün, sözlüğünde mevcut olduğu konusunda bir garanti yoktur. –
sadece harfleri rakamlara bağladığınızdan, bir dizinin indeksini ve string.ascii_lowercase.index (char) 'karakterini bulmak için' string.ascii_lowercase [index] 'yi kullanabilirsiniz. –