2011-01-26 14 views
23

Bu gibi bir liste varPython - İç içe geçmiş bir listenin ikinci sütununda Maksimum Değeri Bulma

alkaline_earth_values = [['beryllium', 4], ['magnesium', 12],['calcium', 20], ['strontium', 38], ['barium', 56], ['radium', 88]] 

Sadece max(list) yöntemini kullanırsam, cevaplama stronsiyumunu döndürürüm. Tamsayı en yüksek olan eleman.

+3

Buradaki cevaplar gayet iyi, ama aynı zamanda [benzer bir soru] (http://stackoverflow.com/questions/14884220/search-the-biggest-number-of-one-column- bunun bir kopyası olarak kapatılmış, ancak yine de bunlarla aynı olmayan bazı yararlı cevaplara sahip olan bir liste-liste-python # 14884336). –

cevap

46
max(alkaline_earth_values, key=lambda x: x[1]) 

nedenidir . max, dizideki her öğe için bu işlevi çağırır. Ve "lambda x: x [1]", bir listeyi alan ve ilkini (sayma sıfırdan başlayarak) döndüren küçük bir işlev oluşturur. Yani

k = lambda x: x[1] 

bu gibi durumlarda kullanmak

def k(l): 
    return l[1] 

ama daha kısa ve güzel söyleyerek aynıdır.

+0

Çok teşekkür ederim, bir şampiyon gibi çalıştım. – davelupt

+0

Bu durumun ne yaptığını terimlerin açıklamalarında açıklar mısınız? Sanırım x: x [1] 'in pozisyonu tanımladığını düşünüyorum, çünkü eğer 1 için 0 değerini kullanırsam doğru maksimum string değerini döndürür. Ancak, Python kütüphanesine bakmasına rağmen, anahtar ve lambda noktasını tam olarak anlamadım. – davelupt

+1

anahtar, max() yerleşik işlevine bir anahtar kelime bağımsız değişkeni. Anahtar argümanı, yinelenebilir bir elemanın verilmiş bir değerinin verilişinde kullanım için bir değer verilen, bir callable (fonksiyon, lambda vb.) Olmalıdır. "Lambda x: x [1]", Python dilim gösterimini destekleyen bir şeyin ikinci öğesini döndüren anonim bir işlev (lambda) oluşturur. –

5

key bağımsız değişkenini kullanın. maksimum fonksiyonunun anahtar argüman max maksimum eleman aranır hangi değerini bilmek istediğinde çağrılan bir işlevi belirtir, çünkü bu işleri

max(alk..., key=operator.itemgetter(1))