Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 定义OrderedDict-ValueError时出错:要解压缩的值太多_Python_Python 2.7_Ordereddictionary - Fatal编程技术网

Python 定义OrderedDict-ValueError时出错:要解压缩的值太多

Python 定义OrderedDict-ValueError时出错:要解压缩的值太多,python,python-2.7,ordereddictionary,Python,Python 2.7,Ordereddictionary,整个下午,我都在尝试定义几个OrderedDict对象,但是得到了ValueError消息 from collections import OrderedDict personA = OrderedDict([(u'score', OrderedDict([ (u'2015-09-09 03:40:33 +0100', 2646), (u'2015-09-10 03:35:34 +01

整个下午,我都在尝试定义几个
OrderedDict
对象,但是得到了
ValueError
消息

from collections import OrderedDict

personA = OrderedDict([(u'score',
                    OrderedDict([ (u'2015-09-09 03:40:33 +0100', 2646), 
                                  (u'2015-09-10 03:35:34 +0100', 2646), 
                                ]),
      OrderedDict([(u'adjusted_score',
                    OrderedDict([ (u'2015-09-09 03:40:33 +0100', 3646), 
                                  (u'2015-09-10 03:35:34 +0100', 3646), 
                                ])
                   )])
      )])

personB = OrderedDict([(u'score', 
                    OrderedDict([ (u'2015-09-11 03:40:33 +0100', 4646), 
                                  (u'2015-09-12 03:35:34 +0100', 4646), 
                                ]),
      OrderedDict([(u'adjusted_score',
                    OrderedDict([ (u'2015-09-11 03:40:33 +0100', 5646), 
                                  (u'2015-09-12 03:35:34 +0100', 5646), 
                                ]),
                    )])
      )])
运行此命令将返回:

$ python ordereddict.py
Traceback (most recent call last):
  File "ordereddict.py", line 23, in <module>
    (u'2015-09-10 03:35:34 +0100', 3646), 
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/collections.py", line 52, in __init__
    self.__update(*args, **kwds)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_abcoll.py", line 547, in update
    for key, value in other:
ValueError: too many values to unpack 
$python ordereddict.py
回溯(最近一次呼叫最后一次):
文件“ordereddict.py”,第23行,在
(u'2015-09-10335:34+0100',3646),
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/collections.py”,第52行,在__
自我更新(*args,**kwds)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_abcoll.py”,第547行,在更新中
对于键,其他中的值:
ValueError:要解压缩的值太多

最终的目标是尝试合并这两个嵌套对象,但现在我甚至在定义它们时都被难住了

当使用
列表
输入到
OrderedDict
时,它的形式应为,例如
[(key1,val1),(key2,val2),…]

让我们考虑<代码>角色> /代码>。对于此

OrderedDict
,您可以正确地从
列表开始,将
u'score'
作为键和

OrderedDict([(u'2015-09-09 03:40:33 +0100', 2646), 
             (u'2015-09-10 03:35:34 +0100', 2646), 
            ])
作为价值

但是请注意,您没有在该值之后给出右括号。相反,您只需给出一个逗号,然后从构造函数列表中的下一个键值条目开始

因此,第一个问题是,您需要在第一个键值对的末尾后面添加一个
,使其成为一个2元组

接下来,当您从第二个键值对开始时,您从一个全新的
OrderedDict
开始,但这不是您想要的。您想要的是将
u'adjusted_score'
作为一个键,位于2元素键值元组中。进行此更改还可以消除一组冗余的结束分隔符

因此,总体而言:

In [10]: personA = OrderedDict([
             (u'score',
              OrderedDict([(u'2015-09-09 03:40:33 +0100', 2646), 
                           (u'2015-09-10 03:35:34 +0100', 2646), 
                          ])
             ), # <-- this was missing for 2-tuple

             (u'adjusted_score',
              OrderedDict([(u'2015-09-09 03:40:33 +0100', 3646), 
                           (u'2015-09-10 03:35:34 +0100', 3646), 
                          ])
             )
        ] # <-- Closes the list passed in the constructor
) # <-- Closes the open parenthesis from the "OrderedDict(" constructor. 

In [11]: personA
Out[11]: OrderedDict([(u'score', OrderedDict([(u'2015-09-09 03:40:33 +0100', 2646), (u'2015-09-10 03:35:34 +0100', 2646)])), (u'adjusted_score', OrderedDict([(u'2015-09-09 03:40:33 +0100', 3646), (u'2015-09-10 03:35:34 +0100', 3646)]))])
[10]中的
:personA=OrderedDict([
(u‘得分’,
订购信息技术([(u'2015-09-09 03:40:33+0100',2646),
(u'2015-09-10 03:35:34+0100',2646),
])

),#外部的
OrderedDict
s未被提供对的列表。您正在传递3元组。请重试

from collections import OrderedDict

personA = OrderedDict([
            (u'score',
             OrderedDict([ (u'2015-09-09 03:40:33 +0100', 2646), 
                        (u'2015-09-10 03:35:34 +0100', 2646), 
                         ])),
            (u'adjusted_score',
             OrderedDict([ (u'2015-09-09 03:40:33 +0100', 3646), 
                           (u'2015-09-10 03:35:34 +0100', 3646), 
                         ]))
            ])

personB = OrderedDict([
            (u'score', 
             OrderedDict([ (u'2015-09-11 03:40:33 +0100', 4646), 
                           (u'2015-09-12 03:35:34 +0100', 4646), 
                         ])),
            (u'adjusted_score',
             OrderedDict([ (u'2015-09-11 03:40:33 +0100', 5646), 
                           (u'2015-09-12 03:35:34 +0100', 5646), 
                         ])),
             ])