У меня есть словарь, который я преобразовал в список, чтобы я мог отсортировать по первому элементу. Ключ в словаре представляет собой строку (из цифр), значение представляет собой целое число, которое сохраняется в списке.
Список из словаря преобразования выглядит так:
[('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),.........]
В словаре содержится около 240 000 наименований. Я хотел бы отсортировать словарь по первому индексу, но когда я использую itemgetter (0), он сортирует список сначала по всем «1». Отсортированный список выглядит так:
[('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), ....]
Я бы хотел, чтобы список сортировался по ['0', 3), ('1', 3), ('2', целое число), ('3', целое число), ... ('240 000 ', целое число)]
Вот мой код, где я читаю в текстовом файле в словарь, преобразовываю в список и использую элементный виджет для сортировки по первому элементу во вложенном списке. Мне нужен словарь в коде, потому что я сильно зависим от него, чтобы искать значения по ключу. Я пытаюсь отсортировать словарь для выходного файла только после запуска всех процессов. Спасибо за любую помощь.
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