我有一本字典:
a = {"w1": "wer", "w2": "qaz", "w3": "edc"}
当我尝试打印它的值时,它们是从右到左打印的:
>>> for item in a.values():
print item,
edc qaz wer
我希望它们从左到右打印:
wer qaz edc
我该怎么做?
我有一本字典:
a = {"w1": "wer", "w2": "qaz", "w3": "edc"}
当我尝试打印它的值时,它们是从右到左打印的:
>>> for item in a.values():
print item,
edc qaz wer
我希望它们从左到右打印:
wer qaz edc
我该怎么做?
你不能。字典没有您可以使用的任何顺序,因此对于字典文字没有“从左到右”的概念。决定排序,并坚持下去。
您可以使用collections.OrderedDict
(python 2.7 或更高版本——某处有一个 ActiveState 配方为 python 2.4 或更高版本(我认为)提供此功能)来存储您的项目。当然,您需要以正确的顺序将项目插入字典({}
语法将不再有效 - 也不会将 key=value 传递给构造函数,因为正如其他人所提到的,那些依赖于具有没有顺序的概念)
假设您希望它们按字母顺序排列,您可以执行以下操作:
a = {"w1": "wer", "w2": "qaz", "w3": "edc"} # your dictionary
keylist = a.keys() # list of keys, in this case ["w3", "w2", "w1"]
keylist.sort() # sort alphabetically in place,
# changing keylist to ["w1", "w2", w3"]
for key in keylist:
print a[key] # access dictionary in order of sorted keys
正如@IgnacioVazquez-Abrams 提到的,这不是字典中的东西,但是您可以通过使用来自http://pypi.python.org/pypi/odictorder
的有序字典来实现类似的效果odict
还可以查看PEP372以获取更多讨论和 odict 补丁。
字典使用哈希值来关联值。对字典进行排序的唯一方法如下所示:
dict = {}
x = [x for x in dict]
# sort here
y = []
for z in x: y.append(dict[z])
我有一段时间没有在 python 中做过任何真正的工作,所以我可能有点生疏。如果我错了,请纠正我。