Tôi có từ điển mà tôi đã chuyển đổi thành danh sách để tôi có thể sắp xếp theo mục đầu tiên. Khóa trong từ điển là một chuỗi (số), giá trị là một số nguyên được duy trì trong danh sách.
Danh sách từ việc chuyển đổi từ điển hình như:Sắp xếp danh sách lồng nhau theo mục đầu tiên - itemgetter không thực hiện thủ thuật
[('228055', 1), ('228054', 1), ('228057', 2), ('228056', 1), ('228051', 1), ('228050', 1), ('228053', 1), ('203184', 6), ('228059', 1), ('228058', 1), ('89370', 2), ('89371', 3), ('89372', 2), ('89373', 1), ('89374', 1), ('89375', 1), ('89376', 1), ('89377', 1), ('89378', 1), ('89379', 1),.........]
Có khoảng 240.000 mục trong từ điển. Tôi muốn sắp xếp từ điển theo chỉ mục đầu tiên, nhưng khi tôi sử dụng itemgetter (0), nó sắp xếp danh sách theo tất cả "1" đầu tiên. Các chàng liệt kê được sắp xếp như sau:
[('0', 3), ('1', 3), ('10', 3), ('100', 4), ('1000', 3), ('10000', 1), ('100000', 3), ('100001', 2), ('100002', 3), ('100003', 3), ('100004', 2), ('100005', 2), ('100006', 2), ('100007', 2), ('100008', 2), ('100009', 2), ('10001', 1), ('100010', 3), ('100011', 3), ('100012', 3), ('100013', 2), ('100014', 1), ('100015', 1), ('100016', 1), ('100017', 1), ('100018', 1), ....]
Tôi muốn danh sách để được sắp xếp theo [ '0', 3), ('1', 3), ('2', số nguyên), ('3' , số nguyên), ... ('240.000', số nguyên)]
Đây là mã tôi đang đọc trong một tệp văn bản từ điển, chuyển đổi thành danh sách và mục được sử dụng để sắp xếp theo mục đầu tiên trong danh sách lồng nhau . Tôi cần từ điển trong mã vì tôi phụ thuộc rất nhiều vào nó để tra cứu các giá trị bằng khóa. Tôi chỉ cố gắng sắp xếp từ điển cho tệp đầu ra khi tất cả các tiến trình được chạy. Cảm ơn vì bất kì sự giúp đỡ.
import sys, string, csv, arcpy, os, fileinput, traceback
from arcpy import env
from operator import itemgetter
#Creating a dictionary of FID: LU_Codes from external txt file
text_file = open("H:\SWAT\NC\FID_Whole_Copy.txt", "rb")
#Lines = text_file.readlines()
FID_GC_dict = dict()
reader = csv.reader(text_file, delimiter='\t')
for line in reader:
FID_GC_dict[line[0]] = int(line[1])
text_file.close()
dict_List = [(x, FID_GC_dict[x]) for x in FID_GC_dict.keys()]
dict_List.sort(key=itemgetter(0))
print dict_List
'text_file = mở (r "H: \ SWAT \ NC \ FID_Whole_Copy.txt") ' – kev