2016-09-30 22 views
0

Meine Python ist 3 ver. Ich habe eine Liste, die Unterlisten enthält, wie:Anzahl Unterlisten Länge in Python3

L=[[1,2], [3,4], [5,6,7]] 

Ich möchte Länge aller SUB_LIST berechnen und sie in einem Wörterbuch aufschreiben, wie folgt aus:

D={2:2,3:1} 

das heißt, wir haben 2 Listen, die Länge 2 haben, und 1 Liste, die die Länge 3 haben.

Es kann durch for-Schleife + überprüft werden D [Schlüssel] ist vorhanden oder nicht.

Darf es einen 'pythonischen Weg' geben?

+0

Ja. Sie können 'for loop' verwenden. Hast du etwas versucht? – estebanpdl

+0

kannst du bitte deine arbeit hier zeigen? – idjaw

+0

Haben Sie etwas, bevor Sie versuchen, es in einer pythonischen Weise zu schreiben? Außerdem würde ich denken, dass Sie eine Liste mit einer Länge von 3 haben sollten (Ihr Beispiel ist rückwärts) –

Antwort

2

Verwenden defaultdict, wo Sie die Länge der Liste als Schlüssel speichern, und nur jeder Wert um 1 jedes Mal erhöht, um eine passende Listenlänge zu erhalten:

from collections import defaultdict 

d = defaultdict(int) 
L = [[1,2], [3,4], [5,6,7]] 

for li in L: 
    d[len(li)] += 1 

print(d) # defaultdict(<class 'int'>, {2: 2, 3: 1}) 

Oder nutzen Counter von collections auch:

from collections import Counter 

c = Counter(len(li) for li in L) 

print(c) # Counter({2: 2, 3: 1}) 
0

Sie müssen über die Liste iterieren und prüfen, ob die Länge als Schlüssel existiert oder nicht. Wenn es vorhanden ist, erhöhen Sie den Wert um 1, andernfalls fügen Sie den Wert als 1 hinzu. Unten ist der Beispielcode.

>>> L = [[1,2], [3,4], [5,6,7]] 
>>> my_len_dict = {} 
>>> for item in L: 
...  item_length = len(item) 
...  if item_length in my_len_dict: 
...   my_len_dict[item_length] += 1 
...  else: 
...   my_len_dict[item_length] = 1 
... 
>>> my_len_dict 
{2: 2, 3: 1} 
Verwandte Themen