2016-11-01 7 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 

Надеюсь, вопрос ясен. Я попытался добавить целые числа colum с длиной списка, но это не сработает, потому что столбец необходимо определить по длине списка.

ответ

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])