2009-05-08 59 views
7

tôi đang làm việc trên tích hợp với API Photobucket và tôi tình cờ này trong họ api docs:Sắp xếp theo từ điển?

"Sắp xếp các thông số theo tên lexographically [sic] (byte đặt hàng, tiêu chuẩn phân loại, không phải tự nhiên hoặc trường hợp không nhạy cảm. Nếu tham số có cùng tên, sau đó sắp xếp theo giá trị. "

Điều đó có nghĩa là gì? Làm cách nào để sắp xếp thứ gì đó theo từ điển? thứ tự byte?

Phần còn lại của tài liệu của họ đã được chấp thuận cho đến giờ, nhưng (đối với tôi) có vẻ như dòng này giải thích thêm. Thật không may là không có gì để có được.

Dù sao, tôi đang viết các ứng dụng trong Python (nó cuối cùng sẽ trở thành một ứng dụng Django) trong trường hợp bạn muốn giới thiệu module cụ thể mà sẽ xử lý như sắp xếp cho tôi^_^

Trả lời

6

Từ phải là "lexicographic"

http://www.thefreedictionary.com/Lexicographic

Thứ tự từ điển. Sử dụng các chữ cái khi chúng xuất hiện trong các chuỗi.

Như chúng gợi ý, không gấp cả chữ hoa và chữ thường lại với nhau. Chỉ cần sử dụng phương thức list.sort() được xây dựng sẵn của Python.

+0

Tôi nghĩ tôi thừa hưởng từ sai chính tả từ một phiên bản rất cũ của thông số OAuth 1.0. – Justin

4

Điều này tương tự như API Facebook - chuỗi truy vấn cần được chuẩn hóa trước khi tạo mã băm chữ ký.

Bạn có thể có một cuốn từ điển các thông số như:

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

Tạo chuỗi truy vấn như sau:

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

params.items() trả về giá trị và khóa của từ điển như một danh sách các bộ, sorted() loại danh sách và urllib.urlencode() kết nối chúng thành một chuỗi duy nhất trong khi thoát.

8

Tôi nghĩ rằng ở đây từ điển là một "bí danh" cho sắp xếp 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

Trích một chút nhiều hơn từ các phần:

2 Tạo String Base:

Đồng hóa các thông số:

  • Thêm các thông số cụ thể OAuth cho yêu cầu này với thông số đầu vào, bao gồm:

    oauth_consumer_key = <consumer_key> 
    oauth_timestamp = <timestamp> 
    oauth_nonce = <nonce> 
    oauth_version = <version> 
    oauth_signature_method = <signature_method> 
    
  • Sắp xếp tham số theo tên theo từ điển [sic] (thứ tự byte, sắp xếp tiêu chuẩn, không tự nhiên hoặc phân biệt chữ hoa chữ thường).Nếu các tham số có cùng tên, thì sắp xếp theo giá trị.

  • Mã hóa các giá trị tham số như trong RFC3986 Phần 2 (tức là, mã url). Tạo chuỗi tham số(). Đây là định dạng tương tự như 'postdata' của HTTP hoặc 'chuỗi truy vấn', nghĩa là, mỗi thông số được biểu thị dưới dạng tên = giá trị được phân cách bởi &. Ví dụ, a=1&b=2&c=hello%20there&c=something%20else

Tôi nghĩ rằng họ đang nói rằng các tham số phải xuất hiện theo thứ tự sắp xếp - oauth_consumer_key trước oauth_nonce trước ...

Các vấn đề liên quan