Tôi đang cố gắng lặp qua một từ điển mà tôi đã xác định theo thứ tự cụ thể, nhưng nó luôn lặp theo thứ tự khác với thứ tự tôi đã xác định trong mã của tôi. Đây chỉ là một ví dụ cơ bản về những gì tôi đang cố gắng làm. Từ điển tôi đang lặp lại là lớn hơn nhiều, có nhiều phím được đặt tên phức tạp hơn và không theo thứ tự bảng chữ cái/số.Làm thế nào để lặp qua một từ điển Python theo thứ tự được xác định?
level_lookup = \
{
'PRIORITY_1' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_2' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_3' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_4' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_5' : { 'level' : 'CHECK', 'value' : '' },
'PRIORITY_6' : { 'level' : 'CHECK', 'value' : '' },
'PRIORITY_7' : { 'level' : 'GOOD', 'value' : '' },
'PRIORITY_8' : { 'level' : 'GOOD', 'value' : '' },
}
for priority in level_lookup:
if(level_lookup[ priority ][ 'value' ] == 'TRUE'):
set_levels += str(priority) + '\n'
Tôi cần thứ tự mà tôi xác định từ điển sẽ được giữ nguyên trong quá trình lặp lại. Đơn đặt hàng của tôi không phải là chữ cái, do đó sắp xếp theo thứ tự bảng chữ cái sẽ không thực sự hữu ích. Có cách nào để làm điều này không? Tôi đã thử `level_lookup.items(), nhưng điều đó cũng không duy trì được thứ tự của tôi.
Nếu bạn muốn sử dụng một từ điển thông thường theo một thứ tự cụ thể. .. [không] (http://blog.amir.rachum.com/post/54458435089/python-hash-id-and-dictionary-order). Thay vào đó, hãy sử dụng 'OrderedDict'. – KronoS
Từ điển không có đơn đặt hàng.Đó là, các mục phải xuất hiện theo một thứ tự nào đó khi bạn lặp lại, nhưng mọi thứ đều dễ dàng nhất đối với Python và có thể hoặc không giống với thứ tự các mục được đặt vào và có thể thay đổi khi bạn thêm hoặc xóa các mục. Nếu bạn muốn các mục của bạn trong một đơn đặt hàng, hãy sử dụng một vùng chứa duy trì thứ tự của mục, chẳng hạn như 'collections.OrderedDict'. – kindall