перебрать «большой словарь» вам нужна конструкция цикла:
>>> dict1={'a':[1,2,3,4,5], 'b':[6,7,8,9], etc}
>>> (key,value), = dict1.items()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
>>> for k,v in dict1.items():
... print k,v
...
a [1, 2, 3, 4, 5]
b [6, 7, 8, 9]
etc
Конструкцию вы здесь:
(key,value),=dict1.items()
Не делать то, что вы думаете.
Python поддерживает назначение кортежей. Номер на левой стороне должен совпадать с номером на стороне правой руки:
x,y=1,2
(для Python 3, который имеет прекрасный *
для LH заданий, кроме):
first, second, *the_rest=[1,2,3,4,5,6,7]
Запятая в (key,value),
неоднозначно в этом контексте в Py2 или Py3.
Вы использовать Запятая построить кортеж с одним элементом:
>>> 1,
(1,)
>>> 1,2,
(1, 2)
С более чем из одного элемента, он игнорируется.
С добавлением скобок на LH затем завершающая запятая, вы создаете вложенную кортеж:
>>> (1,2),
((1, 2),)
Единственный способ можно назначить такого зверя, чтобы соответствовать вложенности на RH:
>>> (x,y),z=((1,2),3)
>>> x,y,z
(1, 2, 3)
без использования скобки, чтобы создать кортеж явно в Python, вы должны быть осторожны с order of operations:
>>> (1,2)==1,2
(False, 2)
# probably not what is expected here...
Вы может это сделать:
>>> dict1={'a':[1,2,3,4,5], 'b':[6,7,8,9]}
>>> keys, values=dict1.keys(), dict1.values()
>>> keys
['a', 'b']
>>> values
[[1, 2, 3, 4, 5], [6, 7, 8, 9]]
И вы можете построить Dict из этих двух списков ключей/значений, используя почтовый индекс:
>>> dict(zip(keys,values))
{'a': [1, 2, 3, 4, 5], 'b': [6, 7, 8, 9]}
Вместо того, предполагается, что вы всегда можете на самом деле * * запустить код. Это прямо перед вами. Я предполагаю, что он возьмет первый ключ и значение в dict и назначит им «ключ» и «значение» соответственно. Если ошибка, которую вы получаете, на самом деле из этого кода, тогда она просто не будет работать, если 'dict' имеет более одного элемента. Запятая необходима, потому что вы деконструируете последовательность * из одного элемента * кортежей '(key, value)', поэтому вам нужно назначить это кортеж переменных из одного элемента. (И каждая из этих переменных сама по себе является двухпозиционным кортежем.) – millimoose
Если это сбивает с толку, часть его связана с тем, что то, что вы делаете, вероятно, не является правильным способом выполнить то, что вы пытаетесь сделать, о чем вы не слишком хорошо описали. Вы должны предоставить образец кода, который фактически вызывает ошибку, которую вы имеете, и результаты, которые вы ожидаете. – millimoose