我在使用Python 2.7的Raspbian上遇到了一些问题,无法正确使用collections.OrderedDict
类。我尝试打印两个有序字典以便进行比较,但无论我怎么尝试,这些字典总是以通常的无序方式打印出来。这对于精确比较非常重要。
这是我在我的Raspberry Pi上得到的输出:
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)])
显然有些不对劲,因为它打印了函数调用,并将键和值组放入了一个嵌套列表中...
这是我在我的电脑上运行类似内容得到的结果:
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版本。
OrderedDict
按照插入顺序进行排序,而不是按字母数字键的顺序。 - el.pescado - нет войне