2016-11-01 73 views
0

我循環的索引,列舉字典如下:的Python:使用列表長度遞增枚舉字典

for column, key, in enumerate(guid_material_dictionary.iteritems()): 
      print column, key, len(key[1]) 

它提供了以下的輸出:

0 ('0GVHv3rDXBewxnxizHODe9', ['Steen', 'Isolatie', 'Spouw']) 3 
1 ('2kj3p602r8MgLr9ocS99Pp', ['Beton C']) 1 
2 ('3_gGbJ1L17UP8z1VVIOPak', ['Beton', 'Pleister', 'Baksteen', 'Folie']) 4 
3 ('3mROnO4_7VbAI2oRYB55vS', ['Koper']) 1 
4 ('1HX$_kbR1AKxF1CmKGciQa', ['Steen - kalkzandsteen']) 1 
5 ('0xtMj9XwvBjvPzzyvlFeQ0', ['Isolatie - Steenwol zacht']) 1 

名單長度在輸出中變化很大。 我想要做的是使用列表長度來增加列數。 以便列數由列表長度定義。這個輸出是我想要做的一個例子。

0 ('0GVHv3rDXBewxnxizHODe9', ['Steen', 'Isolatie', 'Spouw']) 3 
3 ('2kj3p602r8MgLr9ocS99Pp', ['Beton C']) 1 
4 ('3_gGbJ1L17UP8z1VVIOPak', ['Beton', 'Pleister', 'Baksteen', 'Folie']) 4 
8 ('3mROnO4_7VbAI2oRYB55vS', ['Koper']) 1 
9 ('1HX$_kbR1AKxF1CmKGciQa', ['Steen - kalkzandsteen']) 1 
10 ('0xtMj9XwvBjvPzzyvlFeQ0', ['Isolatie - Steenwol zacht']) 1 

我希望問題清楚。我所嘗試的是添加列表長度的列整數,但它不起作用,因爲列需要由列表長度定義。

回答

0

只跳過enumerate部分,並使用一個變量:

column = 0 
for key in guid_material_dictionary.iteritems(): 
    print column, key, len(key[1]) 
    column += len(key[1]) 

請注意,您在使用它之後增加column變量。


該字典鍵的順序是任意,所以你不能真正匹配的鍵column變量。

0

您不能使用enumerate。但它是很容易的編寫自己的發電機:

def my_enumerate(iterable): 
    total = 0 
    for key, value in iterable: 
     yield total, (key, value) 
     total += len(value) 

所以你可以使用它像這樣:

for column, key in my_enumerate(guid_material_dictionary.iteritems()): 
    print column, key, len(key[1])