2

我有这个字典张贴在request.POST

<QueryDict: {u'csrfmiddlewaretoken': [u'fhvpUorGAl7LMv4JIJRd0WOEHPkKn6iN'], u'actor_1': [u'first_actor'], u'actor_5': [u'second_actor'], u'actor_55': [u'third_actor'], u'actor_2': [u'fourth_actor']}>

我想按键对其进行排序

<QueryDict: {u'actor_1': [u'first_actor'], u'actor_2': [u'fourth_actor'], u'actor_5': [u'second_actor'], u'actor_55': [u'third_actor'], u'csrfmiddlewaretoken': [u'fhvpUorGAl7LMv4JIJRd0WOEHPkKn6iN']}>

有没有办法对字典的键(不是值)进行排序?

4

3 回答 3

4

如前所述,常见的 dicts 本质上是无序的,但您可以使用 OrderedDicts。

import collections

d = {
    u'csrfmiddlewaretoken': [u'fhvpUorGAl7LMv4JIJRd0WOEHPkKn6iN'], 
    u'actor_1': [u'first_actor'], 
    u'actor_2': [u'fourth_actor']
}

collections.OrderedDict(sorted(d.items()))
于 2013-09-05T11:05:49.843 回答
2

字典无法排序。而是使用例如列表。

但是,您可以打印出使用以下命令排序的值:

d = {u'csrfmiddlewaretoken': [u'fhvpUorGAl7LMv4JIJRd0WOEHPkKn6iN'], 
 u'actor_1'            : [u'first_actor'], 
 u'actor_5'            : [u'second_actor'], 
 u'actor_55'           : [u'third_actor'], 
 u'actor_2'            : [u'fourth_actor']}

keys = d.keys()
keys.sort()
for key in keys:
   print d[key]

print keys

结果:

[u'first_actor']
[u'fourth_actor']
[u'second_actor']
[u'third_actor']
[u'fhvpUorGAl7LMv4JIJRd0WOEHPkKn6iN']
[u'actor_1', u'actor_2', u'actor_5', u'actor_55', u'csrfmiddlewaretoken']

其中显示所有排序值和显示排序键的最后一行。

于 2013-09-05T10:56:44.730 回答
0

不,从根本上说,Python 字典中的键是无序的。在此处查看字典文档

于 2013-09-05T10:57:01.350 回答