【问题标题】:Sort lexicographically?按字典顺序排序?
【发布时间】:2010-10-24 20:20:57
【问题描述】:

我正在努力与 Photobucket API 集成,我在他们的 api docs 中遇到了这个问题:

"按名称对参数进行排序 lexographically [原文如此](字节排序, 标准排序,非自然或大小写 不敏感)。如果参数有 同名,然后按值排序。”

这是什么意思?如何按字典顺序对某些内容进行排序?字节顺序?

到目前为止,他们的其余文档都还不错,但是(对我而言)这行似乎需要进一步解释。不幸的是,没有。

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

【问题讨论】:

    标签: python api sorting photobucket


    【解决方案1】:

    引用该部分的更多内容:

    2 生成基本字符串:

    规范化参数:

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

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

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

    我认为他们是说参数必须按排序顺序出现 - oauth_consumer_key before oauth_nonce before ...

    【讨论】:

      【解决方案2】:

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

      词典自然 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

      【讨论】:

        【解决方案3】:

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

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

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

        像这样创建查询字符串:

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

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

        【讨论】:

          【解决方案4】:

          这个词应该是“字典”

          http://www.thefreedictionary.com/Lexicographic

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

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

          【讨论】:

          • 我认为我继承了 OAuth 1.0 规范的一个非常旧版本的拼写错误。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-12-24
          • 2020-08-02
          • 2015-06-23
          • 1970-01-01
          • 2019-01-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多