我有一本字典:
a = {"w1": "wer", "w2": "qaz", "w3": "edc"}
当我尝试打印其值时,它们从右到左打印:
>>> for item in a.values():
print item,
edc qaz wer
我希望它们从左到右打印:
wer qaz edc
我该怎么做?
答案 0 :(得分:9)
你做不到。字典没有任何可以使用的顺序,因此没有关于字典文字的“从左到右”的概念。决定分类,并坚持下去。
答案 1 :(得分:3)
您可以使用collections.OrderedDict
(python 2.7或更新版本 - 某处有一个ActiveState配方,为python 2.4或更新版本(我认为)提供此功能)来存储您的项目。当然,您需要以正确的顺序将项目插入字典中({}
语法将不再起作用 - 也不会将key = value传递给构造函数,因为正如其他人所提到的那样,那些依赖在没有秩序概念的常规词典上)
答案 2 :(得分:2)
假设您希望按键的字母顺序排列它们,您可以执行以下操作:
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
答案 3 :(得分:0)
正如@ IgnacioVazquez-Abrams所提到的,这不是词典中的order
,但你可以通过使用来自http://pypi.python.org/pypi/odict
还可以查看PEP372以获取更多讨论和odict补丁。
答案 4 :(得分:0)
字典使用哈希值来关联值。对字典进行排序的唯一方法是:
dict = {}
x = [x for x in dict]
# sort here
y = []
for z in x: y.append(dict[z])
我有一段时间没有在python中做过任何实际的工作,所以我可能会有点生疏。如果我弄错了,请纠正我。