如何对在 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.POST
sorted_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 adict
ionary 键未排序(即它们在打印时显示的顺序,或在迭代时产生的顺序是伪随机的)。 tea2code 显示了一个不同的 数据结构,它不“排序”键。它只是跟踪键添加的顺序(不是它们的字母顺序!)以上是关于如何对在 url 中传递的字典的键进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用基于令牌的身份验证对在浏览器中输入 url 的用户进行身份验证?