Skip to main content
 首页 » 编程设计

python之列出字典

2025年05月04日12java哥

在列表中追加是可能的。但是我如何实现在字典中追加?

    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)