在列表中追加是可能的。但是我如何实现在字典中追加?
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.
对于上面的文字?
最佳答案
追加对于字典的概念没有意义,就像列表一样。相反,更明智的说法是插入和删除键/值,因为没有要附加的“end”——字典是无序的。
从你想要的输出来看,你似乎想要一个字典的字典,(即 {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 - 列出字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828578/