如何对在 url 中传递的字典的键进行排序? [复制]

Posted

技术标签:

【中文标题】如何对在 url 中传递的字典的键进行排序? [复制]【英文标题】:How to sort keys of a dictionnary posted in url? [duplicate] 【发布时间】:2013-09-09 04:16:30 【问题描述】:

我在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']>

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

【问题讨论】:

@tea2code 按值而不是键对字典进行排序?所以据我所知,这不是同一个问题 对不起,我复制了错误的链接。正确的:***.com/questions/9001509/… 【参考方案1】:

如前所述,普通字典本质上是无序的,但您可以使用 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()))

【讨论】:

简单的方法列在tea2code给出的第二个链接中:req_posts = request.POSTsorted_posts = sorted(req_posts.iterkeys())【参考方案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']

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

【讨论】:

【参考方案3】:

没有。从根本上说,Python 字典中的键是无序的。查看字典文档here

【讨论】:

不!他们是,请参阅评论中的tea2code链接:) @Drwhite in a dictionary 键排序(即它们在打印时显示的顺序,或在迭代时产生的顺序是伪随机的)。 tea2code 显示了一个不同的 数据结构,它“排序”键。它只是跟踪键添加的顺序(不是它们的字母顺序!)

以上是关于如何对在 url 中传递的字典的键进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

当每个字典都有不同的键时,如何按值对字典列表进行排序?

如何使用基于令牌的身份验证对在浏览器中输入 url 的用户进行身份验证?

jinja2:按定义的键顺序对字典进行排序?

[PY3]——字典中的键如何映射多个值?字典如何排序?

添加键的值并按在 Python 中的字典列表中出现的键对其进行排序

python 根据字典的键值进行排序