我正在与Photobucket API集成,我在api docs中发现了这一点:
“按名称对参数进行排序 lexographically [sic](字节排序, 标准分类,不是自然的或案例 不区分大小写)。如果参数有 同名,然后按值排序。“
这是什么意思?如何按字典顺序排序?字节排序?
到目前为止,他们的其他文档已经确定,但(对我而言)似乎这条线有进一步的解释。不幸的是,没有人可以拥有。
无论如何,我正在用 Python 编写应用程序(它最终将成为Django应用程序),以防你想推荐能够为我处理这种排序的特定模块^ _ ^
答案 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
之前......