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

  • amc

    amc

    21 EYLÜL 2005
  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007
  • MotoManTV

    MotoManTV

    10 Aralık 2009