将平面Python字典转换为字典列表

Fro*_*kys 4 python dictionary loops

我有一个字体,格式如下,我不知道我要收到的行数或项目数:

{'line(0).item1':'a', 'line(0).item2':'34', 
 'line(1).item1':'sd', 'line(1).item2':'2', 'line(1).item3':'fg', 
 'line(2).item1':'f' ... }
Run Code Online (Sandbox Code Playgroud)

使用以下格式将此解析为字典列表的最pythonic方法是什么:

[{'item1':'a', 'item2':'34'}, 
 {'item1':'sd', 'item2':'2', 'item3':'fg'}, 
 {'item1':'f',...}, ...]
Run Code Online (Sandbox Code Playgroud)

提前致谢.

JBe*_*rdo 5

d = {'line(0).item1':'a' ...}

out = collections.defaultdict(list)
for k,v in d.items():
    n,val = re.findall(r'^line\((\d+)\)\.(\w+)$', k)[0]
    out[int(n)].append((val,v))

my_list = [dict(out[v]) for v in sorted(out)]
Run Code Online (Sandbox Code Playgroud)

输出将是预期的:

[{'item2': '34', 'item1': 'a'}, {'item2': '2', 'item3': 'fg', 'item1': 'sd'}, {'item1': 'f'}]
Run Code Online (Sandbox Code Playgroud)