2014-11-10 2 views
-1

Я создал этот списокДоступ словарь внутри списка питона

counterDict = [ 
    ['countR0', {0:0,1:0,2:0,3:0,4:0,5:0}], 
    ['countR1', {0:0,1:0,2:0,3:0,4:0,5:0}], 
    ['countR7', {0:0,1:0,2:0,3:0,4:0,5:0}], 
    ['countR12', {0:0,1:0,2:0,3:0,4:0,5:0}], 
    ['countR14', {0:0,1:0,2:0,3:0,4:0,5:0}], 
    ['countR17', {0:0,1:0,2:0,3:0,4:0,5:0}], 
    ['countR18', {0:0,1:0,2:0,3:0,4:0,5:0}], 
    ['countR19', {0:0,1:0,2:0,3:0,4:0,5:0}], 
    ['countR20', {0:0,1:0,2:0,3:0,4:0,5:0}], 
    ['countR21', {0:0,1:0,2:0,3:0,4:0,5:0}], 
    ['countR22', {0:0,1:0,2:0,3:0,4:0,5:0}] 
] 

В основном то, что я делаю цикл по выше, используя нашу систему программного обеспечения, которое содержит некоторые дополнительные вещи, недоступные в обычном наборе питона. Но независимо от того, что мы используем python 2.7, и что я делаю, это использовать выше, как счетчик. Мне нужно подсчитать, однако значение (ключ) видно в каждой строке множества разных вопросов. Я просто не могу понять, как правильно получить доступ к приведенному выше. Просто поместите его в компилятор python и попытайтесь получить к нему доступ, и я смущаюсь, поскольку то, что он возвращает, не то, что я ожидаю, поэтому любая помощь в том, как получить доступ к нему должным образом, будет очень полезна. Если бы я написал это неправильно, то, пожалуйста, скажите мне.

+0

Это то, что я получаю когда я это делаю: counterDict [0] возвращает ['countR1', {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0}] Ожидается, но если я это сделаю this: counterDict [0] [0] он возвращает «countR0», что меня смущает.Ясно, что я ничего не делаю правильно –

ответ

2

Ключ может только происходит onc e в словаре, поэтому, если вы хотите считать ключи, вы либо получите 0 (его не существует), либо 1, если он существует.

Чтобы получить доступ к этому словарю, counterDict[0][1] даст вам {0:0,1:0,2:0,3:0,4:0,5:0}. Однако то, что я думаю, что вы хотите, это:

counterDict = {'R0': {0:0,1:0,2:0,3:0,4:0,5:0}, 
       'R01': {0:0,1:0,2:0,3:0,4:0,5:0}} 

Теперь вы можете сделать следующее:

counterDict['R0'][0] # prints 0 

Чтобы преобразовать существующий список в следующем формате:

counterDict = {r[0][5:]: r[1] for r in counterDict} 
+0

. Хорошо. Похоже на то, что я пытаюсь сделать, позвольте мне сделать это. –

+0

Вот что мне нужно: D Отлично и спасибо. –

+1

Все, пожалуйста, воздержитесь от этого, я не могу, потому что у меня нет репутации, но это был прекрасный ответ: D –

0

counterDict представляет собой список с 11 элементов (это не так, как предполагает его название, а Dict)

Каждый элемент counterDict является также список с двумя элементами.

Первый элемент каждого элемента counterDict - это строка, вторая - словарь.

counterDict[0] является список:

['countR0', {0:0,1:0,2:0,3:0,4:0,5:0}]

Поэтому counterDict[0][0] является первым элементом этого списка: 'countR0'

Если вы хотите, словарь, вам нужно

counterDict[0][1]:

{0:0,1:0,2:0,3:0,4:0,5:0}

И элемент этого словаря:

counterDict[0][1]['0'] -> 0

Я думаю, что вы могли бы иметь в виду

counterDict = [ 
    {'countR0': {0:0,1:0,2:0,3:0,4:0,5:0}} 
] 

, который позволил бы вам сказать

counterDict[0]['countR0']['0']

+1

Это на самом деле * списки *, а не массивы. Python различает два, потому что список является фундаментальным типом последовательности, где в качестве массива используется экземпляр ['array.array'] (https://docs.python.org/2/library/array.html#array.array). – iCodez

+0

Хорошо, я понимаю, что я сделал не так. Спасибо, позвольте мне посмотреть, могу ли я получить это, чтобы работать в коде, который я использую. : D –

+0

Итак, чтобы вернуть ошибку, Traceback (последний последний звонок): Файл "", строка 2, в {'countR0', {0: 0,1: 0,2: 0,3: 0,4: 0,5: 0}} ТипError: unhashable тип: 'dict' –

Смежные вопросы