按字典顺序排序?

时间:2009-05-08 16:18:51

标签: python api sorting photobucket

我正在与Photobucket API集成,我在api docs中发现了这一点:

  

“按名称对参数进行排序   lexographically [sic](字节排序,   标准分类,不是自然的或案例   不区分大小写)。如果参数有   同名,然后按值排序。“

这是什么意思?如何按字典顺序排序?字节排序?

到目前为止,他们的其他文档已经确定,但(对我而言)似乎这条线有进一步的解释。不幸的是,没有人可以拥有。

无论如何,我正在用 Python 编写应用程序(它最终将成为Django应用程序),以防你想推荐能够为我处理这种排序的特定模块^ _ ^

4 个答案:

答案 0 :(得分:8)

我认为这里的词典是ascii排序的“别名”吗?

Lexicographic          Natural  
z1.doc                  z1.doc    
z10.doc                 z2.doc    
z100.doc                z3.doc    
z101.doc                z4.doc    
z102.doc                z5.doc    
z11.doc                 z6.doc    
z12.doc                 z7.doc    
z13.doc                 z8.doc    
z14.doc                 z9.doc     
z15.doc                z10.doc    
z16.doc                z11.doc    
z17.doc                z12.doc    
z18.doc                z13.doc     
z19.doc                z14.doc     
z2.doc                 z15.doc    
z20.doc                z16.doc    
z3.doc                 z17.doc    
z4.doc                 z18.doc    
z5.doc                 z19.doc    
z6.doc                 z20.doc    
z7.doc                z100.doc    
z8.doc                z101.doc    
z9.doc                z102.doc    

答案 1 :(得分:6)

这个词应该是“lexicographic”

http://www.thefreedictionary.com/Lexicographic

字典顺序。使用字母中出现的字母。

正如他们所说,不要将大写和小写折叠在一起。只需使用Python内置的list.sort()方法。

答案 2 :(得分:4)

这类似于Facebook API - 在生成签名哈希之前,需要对查询字符串进行规范化。

你可能有一个参数字典,如:

params = {
  'consumer_key': "....",
  'consumer_secret': "....",
  'timestamp': ...,
  ...
}

创建查询字符串,如下所示:

urllib.urlencode(sorted(params.items()))

params.items()以列表元组的形式返回字典的键和值,sorted()对列表进行排序,urllib.urlencode()在转义时将它们连接成一个字符串。

答案 3 :(得分:1)

从该部分引用一点:

  

2生成基本字符串:

     

规范化参数:

     
      
  • 将此请求的OAuth特定参数添加到输入参数,包括:

    oauth_consumer_key = <consumer_key>
    oauth_timestamp = <timestamp>
    oauth_nonce = <nonce>
    oauth_version = <version>
    oauth_signature_method = <signature_method>
    
  •   
  • 按名称排序参数[sic](字节排序,标准排序,非自然或不区分大小写)。如果参数具有相同的名称,则按值排序。

  •   
  • 对RFC3986第2节中的参数值进行编码(即urlencode)。   创建参数字符串()。这与HTTP'posddata'或'querystring'的格式相同,即每个参数表示为name = value,由&amp;分隔。例如,a=1&b=2&c=hello%20there&c=something%20else

  •   

我认为他们说的是参数必须出现在排序顺序 - oauth_consumer_key之前oauth_nonce之前......