SORU
5 Kasım 2011, CUMARTESİ


sözlükte değer anahtarı al

Sözlükte yaş bakmak ve eşleşen adını gösteren bir fonksiyon yaptım:

list = {'george':16,'amber':19}
search_age = raw_input("Provide age")
for age in list.values():
    if age == search_age:
        name = list[age]
        print name

Karşılaştırmak için nasıl biliyorum sadece kişinin adını göstermek için nasıl bilmiyorum yaşını bulmak. Ayrıca, KeyError alma nedeniyle 5 satır ediyorum. Doğru olmadığını biliyorum ama geriye doğru arama yapmak için çözemiyorum.

Herhangi bir yardım mutluluk duyacağız.

CEVAP
5 Kasım 2011, CUMARTESİ


Eğer her iki isim istiyorsanızveyaş, (key, value) tuşuna dizilerini verir .items() kullanıyor olması gerekir:

for name, age in mydict.items():
    if age == search_age:
        print name

İki ayrı değişkenler for döngü içine doğru demet paketten, yaş maç.

Ayrıca eğer genellikle yaşına bakıyor olacaksın eğer sözlüğe geri düşünmelisiniz, ve aynı yaşta iki kişi var:

{16: 'george', 19: 'amber'}

sadece yaparak bir yaş için adını arayabilirsiniz

mydict[search_age]

mydict list yerleşik türünün adı olduğu için list yerine aradım, ve başka bir şey için bu adı kullanmamalısın.

Hatta bir satır: belirli bir yaş ile tüm insanların bir listesini alabilirsiniz

[name for name, age in mydict.items() if age == search_age]

ya eğer her yaş sadece bir kişi ise:

next((name for name, age in mydict.items() if age == search_age), None)

sadece eğer o yaşta olan herkes değil eğer yok None verecek.

Son olarak, eğer dict uzun ve sen Python 2, düşünmelisiniz kullanarak .iteritems() yerine .items() Kedi Plus mi onun cevabı, beri değil bir kopya listesi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andytokkallos

    Andytokkallo

    27 Kasım 2007
  • superemposed

    superemposed

    25 Aralık 2007
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012