В списке можно добавить список. Но как я достигаю добавления в словаре?
Symbols from __ctype_tab.o:
Name Value Class Type Size Line Section
__ctype |00000000| D | OBJECT|00000004| |.data
__ctype_tab |00000000| r | OBJECT|00000101| |.rodata
Symbols from _ashldi3.o:
Name Value Class Type Size Line Section
__ashldi3 |00000000| T | FUNC|00000050| |.text
Symbols from _ashrdi3.o:
Name Value Class Type Size Line Section
__ashrdi3 |00000000| T | FUNC|00000058| |.text
Symbols from _fixdfdi.o:
Name Value Class Type Size Line Section
__fixdfdi |00000000| T | FUNC|0000004c| |.text
__fixunsdfdi | | U | NOTYPE| | |*UND*
Как создать словарь, например:
dictOfTables {'__ctype_tab.o':{'__ctype': Name:...,Value:...,Class:...,Type:...,Size:...,Line:...,Section:...}} etc.
для вышеуказанного текста?
Добавление не имеет смысла для понятия словаря так же, как для списка. Вместо этого, более разумно говорить в терминах вставки и удаления ключа/значений, так как нет "конца" для добавления - dict неупорядочен.
Из вашего желаемого результата, похоже, вы хотите иметь диктофон dicts (т.е. {filename : { symbol : { key:value }}
). Я думаю, вы можете получить это из своего ввода с чем-то вроде этого:
import re
header_re = re.compile('Symbols from (.*):')
def read_syms(f):
"""Read list of symbols from provided iterator and return dict of values"""
d = {}
headings=None
for line in f:
line = line.strip()
if not line: return d # Finished.
if headings is None:
headings = [x.strip() for x in line.split()]
continue # First line is headings
items = [x.strip() for x in line.split("|")]
d[items[0]] = dict(zip(headings[1:], items[1:]))
return d
f=open('input.txt')
d={}
for line in f:
m=header_re.match(line)
if m:
d[m.group(1)] = read_syms(f)
Посмотрите на упорядоченный словарь. Я не думаю, что это уже на официальном Python, но есть ссылочная реализация, доступная в PEP.