Python 使用单个键将字典排序为有序字典

Python 使用单个键将字典排序为有序字典,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我正在尝试编写一些代码来创建一个排序的OrderedDict。代码将有一个无序的dict传递给它。不幸的是,当字典x只有一个键时,OrderedDict(sorted(x))似乎会爆炸: >>> from collections import OrderedDict >>> a = {"b": 1} >>> OrderedDict(a) OrderedDict([('b', 1)]) >>> sorted(a) ['b']

我正在尝试编写一些代码来创建一个排序的
OrderedDict
。代码将有一个无序的
dict
传递给它。不幸的是,当字典
x
只有一个键时,
OrderedDict(sorted(x))
似乎会爆炸:

>>> from collections import OrderedDict
>>> a = {"b": 1}
>>> OrderedDict(a)
OrderedDict([('b', 1)])
>>> sorted(a)
['b']
>>> OrderedDict(sorted(a))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/collections/__init__.py", line 56, in __init__
    self.__update(*args, **kwds)
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/_collections_abc.py", line 602, in update
    for key, value in other:
ValueError: need more than 1 value to unpack
>>> 
>>从集合导入订单数据
>>>a={“b”:1}
>>>订单信息技术(a)
OrderedDict([('b',1)])
>>>(a)
['b']
>>>已排序的信息(已排序的(a))
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/ceral/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/collections/__init___;.py”,第56行,在_u init中__
自我更新(*args,**kwds)
文件“/usr/local/ceral/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/_collections_abc.py”,第602行,更新中
对于键,其他中的值:
ValueError:需要超过1个值才能解包
>>> 

当然,我意识到我只需检查字典中的键数,就可以做出适当的行为。然而,我想检查一下我在这里是否做错了什么,因为它似乎应该起作用。有更好/更合适的方法吗?

dict对象的初始化器需要成对的变量
键,val

正如您在测试中清楚地显示的那样,
sorted(a)
是一个iterable,但不是成对的,因此
ValueError:需要超过1个值才能解包

如果要从排序(a)
创建词典,则应执行

>>> OrderedDict.fromkeys(sorted(a))
OrderedDict([('b', None)])
但我认为你真的想要:

>>> OrderedDict(sorted(a.items()))
OrderedDict([('b', 1)])