Мне пришлось сделать два словаря словарей из текстового файла. Они перечислены в числовом порядке в текстовом файле, от C00001 до C20990 (C означает соединение), однако, когда я иду печатать словари, все происходит беспорядочно, а не в числовом порядке. Как я могу это изменить? Кроме того, есть ли способ поставить двойную кавычку в левой части ключа, а другую двойную кавычку в правой части строки значений? И, отдельно, когда я пытаюсь напечатать его так, чтобы он имел новую строку для каждого ключа, он говорит мне, что у меня есть ключевая ошибка (специально для записи C20990.Я бы предположил, что это потому, что это последняя в словаре , но это будет только в том случае, если он уже был в числовом порядке, что это не так, так что это заставляет меня беспокоиться, что во время цикл в конце концов, это произойдет с большим количеством записей)Почему мой словарь не в цифровом порядке, и я могу изменить разделители?
import sys
entries = []
names = []
a = {} #achiral
c = {} #chiral
for line in file:
if line.startswith("ENTRY"):
s = line[5:len(line)]
s = s.split()
entries.append(s[0])
if line.startswith("NAME"):
s = line[4:len(line)]
s = s.strip()
st = "".join(s+" ")
line=next(file)
check = False
while not line.startswith("FORMULA") and not line[0].isalpha():
s = line.strip()
if s.find("(R)")>=0:
check = True
if s.find("(S)")>=0:
check = True
if s.find("L-")>=0:
check = True
if s.find("D-")>=0:
check = True
st+=s+" "
line = next(file)
st = st.strip()
if not check:
a[entries[-1]] = st
else:
c[entries[-1]] = st
names = []
st = ""
for key in c:
print("{0}: {1}".format(key, c[entries[-1]]))
Вы можете использовать 'sortedDict' класс в http://www.grantjenks.com/docs/sortedcontainers/sorteddict.html – Barmar