2014-10-04 19 views
10

Tüm bunlara oldukça yeniyim bu yüzden bu bir noobie sorusu olabilir ... ama sözlük değerlerinin uzunluğunu bulmak istiyorum ... ama bunun nasıl yapılacağını bilmiyorum .Sözlük değerlerinin uzunluğu nasıl bulunur?

Yani, örneğin,

d = {'key':['hello', 'brave', 'morning', 'sunset', 'metaphysics']} 

merak ediyorum ben sözlük değeri olan eşya ait len veya numarayı öğrenmenin bir yolu yoktur.

Teşekkür

+0

aşağıda tartışıldığı gibi, her bir anahtar ya da uzunlukları sadece bir listesi için ... senin uzunluktaki uzunluğu yapıyor olacak ne önemi var? – user1269942

cevap

17

Tabi. belki de değerler uzunluğuna anahtarlarını eşler başka dicti oluşturmak faydalı olacaktır,

length_key = len(d['key']) # length of the list stored at `'key'` ... 

Gerçekte bu neden istediğini söylemek zor ama: Bu durumda, sadece yaparım

length_dict = {key: len(value) for key, value in d.items()} 
length_key = length_dict['key'] # length of the list stored at `'key'` ... 
+0

+1, ancak "length_key", verilen değerin uzunluğuna bağlı olarak değişken bir ad olarak biraz yanıltıcıdır. – user1269942

+0

@ user1269942 - Evet, bunun için iyi bir isimle zor zamanlar geçiriyordum. . . – mgilson

3

Bunu yapmanın bir sözlükte değerlerin uzunlukları tamamı için:

lengths = [len(v) for v in d.values()] 
+0

@squinguy Sanırım bir diksiyonun düzeni koruduğu için bu şekilde hangi liste maddesinin hangi dict girişine karşılık geldiği belirsizdir. – user1269942

+0

@ user1269942 Bu adildir, ancak değerlerin anahtarlarıyla ilişkilendirilmesinden söz edilmemiştir. Onu tüm değerlerin uzunluklarını görerek aldım. – squiguy

+0

ya, adil bir yorum! Bunu düşünmemiştim ... Sadece belirsizliğin olduğunu onlara bildiren bir yorum ekledim. – user1269942

2

Bir dict'ta farklı dict/array değerlerinin uzunluğunu nasıl alabileceğimizi/yorumlayabildiğimizi görmek için bazı deneyler yapalım.

test dicti oluşturmak list and dict comprehensions bkz

>>> my_dict[3] 
[0, 1, 2] 
>>> len(my_dict[3]) 
3 

her anahtar değerlerinin uzunlukları dicti al:

>>> my_dict = {x:[i for i in range(x)] for x in range(4)} 
>>> my_dict 
{0: [], 1: [0], 2: [0, 1], 3: [0, 1, 2]} 

spesifik bir anahtar değeri uzunluğunu al:

>>> key_to_value_lengths = {k:len(v) for k, v in my_dict.items()} 
{0: 0, 1: 1, 2: 2, 3: 3} 
>>> key_to_value_lengths[2] 
2 

dict tüm değerlerin uzunlukları toplamını alın:

>>> [len(x) for x in my_dict.values()] 
[0, 1, 2, 3] 
>>> sum([len(x) for x in my_dict.values()]) 
6 
-1
d={1:'a',2:'b'} 
sum=0 
for i in range(0,len(d),1): 
    sum=sum+1 
i=i+1 
print i 

ÇIKIŞ = 2

+0

Bu koda biraz daha içerik verebilir misiniz? –

+1

Sınırlı kısa vadeli yardımlar sağlayabilen bu kod snippet'i için teşekkür ederiz. Doğru bir açıklama [// meta.stackexchange.com/q/114762] uzun vadeli değerini * göstererek * neden * bu sorunun iyi bir çözümü olduğunu ve gelecekteki okuyuculara daha yararlı olmasını diğer, benzer sorular. Lütfen yaptığınız varsayımlar dahil, bazı açıklamalar eklemek için cevabınızı [düzenleyin]. –