Có cách nào để lặp qua một từ điển, theo thứ tự sắp xếp, được sắp xếp theo VALUE khóa không? Tôi đã đọc abut đối tượng "SortedDictionary", nhưng thật đáng buồn, đó là sắp xếp theo khóa. Một giải pháp sẽ là để tôi lật tất cả các phím của tôi với giá trị của tôi, và đặt chúng vào một SortedDictionary (vì chúng là tất cả các số nguyên) - Tuy nhiên, tôi không hoàn toàn chắc chắn làm thế nào để đi với một trong hai.C# Lặp lại từ điển được sắp xếp theo giá trị
Trả lời
Lấy cặp khóa/giá trị, sắp xếp chúng và lặp lại. Chết dễ dàng sử dụng LINQ:
foreach(var pair in dictionary.OrderBy(p => p.Value)) {
// work with pair.Key and pair.Value
}
Ahh, cảm ơn! :) Điều đó có vẻ chính xác như những gì tôi cần. LINQ này tôi tiếp tục nghe về, nó là gì? –
@GeorgesOatesLarsen: Đó là điều bạn đang bỏ lỡ bằng cách không sử dụng nó. Bạn có thể muốn đọc [this] (http://msdn.microsoft.com/en-us/library/bb308959.aspx) hoặc Google nó (có giới hạn để được giới thiệu tốt hơn bây giờ). – Jon
Đối với hoàn, mã gợi ý ở trên (dictionary.OrderBy (p => p.Value)) "sẽ không" làm việc với nhiều loại tùy chỉnh.
Đặt hàngBằng cách sử dụng IComparable để có thể so sánh hai đối tượng. Nếu Giá trị trong từ điển của bạn là loại tùy chỉnh thì phải triển khai IComparable để có thể sắp xếp giá trị theo cách phù hợp.
Đọc trên here.
"phải triển khai IComparable" - không nhất thiết. OrderBy() có hai quá tải. Một trong số chúng hoạt động như bạn mô tả, nhưng cái thứ hai chấp nhận một đối tượng IComparable tùy chỉnh để có thể đặt bất kỳ loại giá trị nào. – DXM
@DXM, quá tải khác chấp nhận 'IComparer', không phải' IComparable', điều đó sẽ không có ý nghĩa nhiều. Ngoài ra, tôi không nghĩ rằng điều này có liên quan đến các loại giá trị, nó hoạt động tương tự đối với mọi loại. – svick
@svick - xấu của tôi về lỗi đánh máy, bạn nói đúng, đó là IComparer, nhưng quá tải thứ hai chính xác cho những gì OP đang yêu cầu. Bạn có thể viết đối tượng so sánh của riêng bạn để so sánh bất kỳ thứ gì bạn muốn và nạp nó vào OrderBy(). Và bởi "giá trị" tôi không có nghĩa là giá trị so với tham chiếu. Ý tôi là giá trị so với khóa. Tôi nhận ra sự so sánh sẽ làm việc với các loại giá trị cũng như các loại tham chiếu. Nếu đồng ý với câu trả lời này, OrderBy chỉ có thể được sử dụng bởi các loại thực hiện IComparable, bạn có thể giải thích về tình trạng quá tải thứ hai đó không? – DXM
// loại từ điển bằng giá trị
foreach (KeyValuePair<datatype, datatype> item in dictionary)
{
//do something by value....accessing item.value
}
- 1. Làm cách nào để lặp lại từ điển Python, được sắp xếp theo giá trị?
- 2. Sắp xếp từ điển theo giá trị, sau đó nhập
- 3. Sắp xếp theo từ điển?
- 4. Sắp xếp NSArray của từ điển theo giá trị của một khóa trong từ điển
- 5. C#: sắp xếp từ điển theo thứ tự giảm dần
- 6. python, chuyển từ điển sang danh sách được sắp xếp theo giá trị thay vì khóa
- 7. python: lặp trên từ điển được sắp xếp theo chủ chốt
- 8. C# Cách sắp xếp danh sách được sắp xếp theo cột giá trị
- 9. Làm thế nào để sắp xếp một từ điển Python theo giá trị?
- 10. In một dict được sắp xếp theo các giá trị
- 11. Sắp xếp đồ theo giá trị
- 12. Từ điển được sắp xếp đảo ngược?
- 13. Python: Cách sắp xếp danh sách từ điển theo một vài giá trị?
- 14. Sắp xếp một từ điển theo giá trị, sau đó bằng phím
- 15. Sắp xếp từ điển Python dựa trên giá trị từ điển lồng nhau
- 16. Sắp xếp danh sách theo giá trị
- 17. cách sắp xếp theo giá trị được tính bằng django
- 18. giá trị sắp xếp và danh sách trả lại chìa khóa từ dict python
- 19. Sao chép từ điển theo giá trị
- 20. Nhận các khóa NSDictionary được sắp xếp theo các giá trị tương ứng
- 21. Làm thế nào để sắp xếp các từ điển của các đối tượng theo giá trị thuộc tính trong python?
- 22. Viết xô sắp xếp theo C++
- 23. Sắp xếp bản đồ trong bản đồ theo giá trị
- 24. Lặp lại từ điển VBA?
- 25. Sử dụng Đếm sắp xếp theo giá trị âm?
- 26. Python: sắp xếp một từ điển của danh sách
- 27. Xây dựng từ điển được sắp xếp bằng ToDictionary
- 28. Sắp xếp Chế độ xem CouchDB theo Giá trị
- 29. tương đương với từ điển được sắp xếp cho phép các phím trùng lặp
- 30. Sắp xếp mảng đa chiều theo giá trị thập phân
Bao lâu thì bạn cần phải làm điều đó? Làm thế nào nó có hiệu quả? Bạn có sẵn sàng trao đổi bộ nhớ với tốc độ cao hơn không? – svick
Chỉ hoạt động trên khoảng 500 kết quả và chỉ một lần. Luôn sẵn sàng trao đổi bộ nhớ để có tốc độ nhanh hơn: D –