Gần đây tôi đã gặp một số mã Java đơn giản đặt một số chuỗi vào một Java TreeSet, thực hiện một phép so sánh dựa trên khoảng cách, và sau đó thực hiện một cách vui vẻ để tính toán một số điểm nhất định để giải quyết vấn đề.Tương đương TreeSet của Java tương đương với Python?
Câu hỏi của tôi,
Có một cấu trúc dữ liệu tương đương có sẵn cho Python?
- Cây Java trông cơ bản là từ điển đặt hàng có thể sử dụng bộ so sánh một số loại để đạt được thứ tự này.
Tôi thấy có PEP for Py3K cho một OrderedDict, nhưng tôi đang sử dụng 2.6.x. Có một loạt các lệnh triển khai dict được đặt hàng ngoài kia - bất kỳ ai đặc biệt có thể được đề xuất?
PS, Chỉ cần thêm - Tôi thể lẽ nhập DictMixin hay UserDict và thực hiện của riêng tôi sắp xếp/ra lệnh từ điển, và làm cho nó xảy ra thông qua một hàm so sánh - nhưng điều đó dường như là quá mức cần thiết.
Cảm ơn.
Cập nhật. Cảm ơn câu trả lời. Để xây dựng một chút, cho phép nói rằng tôi đã có một chức năng so sánh Thats định nghĩa như thế, (được đưa ra một giá trị ln cụ thể),
def mycmp(x1, y1, ln):
a = abs(x1-ln)
b = abs(y1-ln)
if a<b:
return -1
elif a>b:
return 1
else:
return 0
tôi là một chút không chắc chắn về cách tôi muốn tích hợp này vào đặt hàng cho trong lệnh dict link given here...
Cái gì đó như,
OrderedDict(sorted(d.items(), cmp=mycmp(len)))
Ý tưởng sẽ được hoan nghênh.
Lưu ý rằng 'OrderedDict' không giống như Javas' TreeMap'. Đặt hàng ở đây có nghĩa là các yếu tố được sắp xếp theo thời gian chèn. Đó không phải là điều bạn muốn. Về cơ bản, bạn đang tìm kiếm một tập hợp được thực hiện thông qua cây tìm kiếm nhị phân. – Albert