关于python:如何对在url中发布的dictionary的键进行排序?

How to sort keys of a dictionnary posted in url?

本问题已经有最佳答案,请猛点这里访问。

我在request.POST上发布了这条格言:

1
<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']}>

我想把它按

1
<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']}>

有没有一种方法可以对字典中的键(而不是值)进行排序?


如前所述,常见的口述本质上是无序的,但您可以使用有序的图片。

1
2
3
4
5
6
7
8
9
import collections

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

collections.OrderedDict(sorted(d.items()))


词典无法排序。而是使用一个列表。

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

1
2
3
4
5
6
7
8
9
10
11
12
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

结果:

1
2
3
4
5
6
[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']

显示所有排序的值,最后一行显示排序的键。


不,基本上,python字典中的键是无序的。在这里查看字典文档