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