我在使用collections.OrderedDict
类时遇到了一些问题。我在Raspbian上使用Python 2.7,Raspberry Pi的Debian发行版。我正在试着打印两本字典,以便在文本冒险时进行比较(并排)。为了准确地比较,顺序是必不可少的。不管我怎么尝试,字典都是以它们通常的无序方式印刷的。
以下是我在RPi上执行此操作时得到的结果:
import collections
ship = {"NAME": "Albatross",
"HP":50,
"BLASTERS":13,
"THRUSTERS":18,
"PRICE":250}
ship = collections.OrderedDict(ship)
print ship
# OrderedDict([('PRICE', 250), ('HP', 50), ('NAME', 'Albatross'), ('BLASTERS', 13), ('THRUSTERS', 18)])
显然有一些不正确的地方,因为它打印函数调用,并将键和值组放入嵌套列表中……
这是我在PC上运行类似程序得到的结果:
import collections
Joe = {"Age": 28, "Race": "Latino", "Job": "Nurse"}
Bob = {"Age": 25, "Race": "White", "Job": "Mechanic", "Random": "stuff"}
#Just for clarity:
Joe = collections.OrderedDict(Joe)
Bob = collections.OrderedDict(Bob)
print Joe
# OrderedDict([('Age', 28), ('Race', 'Latino'), ('Job', 'Nurse')])
print Bob
# OrderedDict([('Age', 25), ('Race', 'White'), ('Job', 'Mechanic'), ('Random', 'stuff')])
这一次,它是有序的,但它不应该打印其他东西,对吗?(将其放入列表并显示函数调用。)
我在哪里犯了错误?它不应该与Python的pi版本有任何关系,因为它只是Linux版本。
发布于 2017-09-27 20:33:16
如果你不能编辑定义你的字典的这部分代码,你仍然可以在任何时候以任何你想要的方式对它进行排序,如下所示:
from collections import OrderedDict
order_of_keys = ["key1", "key2", "key3", "key4", "key5"]
list_of_tuples = [(key, your_dict[key]) for key in order_of_keys]
your_dict = OrderedDict(list_of_tuples)
发布于 2021-01-14 01:56:11
您可以在一行中从旧字典中创建有序字典:
from collections import OrderedDict
ordered_dict = OrderedDict(sorted(ship.items())
默认的排序键是按字典键排序的,所以新的ordered_dict
是按旧字典的键排序的。
发布于 2019-09-05 12:40:18
使用dict.items();它可以像下面这样简单:
ship = collections.OrderedDict(ship.items())
https://stackoverflow.com/questions/15711755
复制相似问题