Python词典中的扁平化列表

2024-04-19 21:16:01 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有这样的东西,我怎么能在字典里列出一个简单的列表:

Object {'a': '48',
       'b': '24',
       'c':[{'cA':'20', 'cB':'42', 'cC':'55'}, {'c1':'21', 'c2':'43','c3':'58'}],
       'd':'44',
       'e':'32',}

这是解析的XML文件,在XML C中有如下结构:

<p name = "a">48<\p>
<p name = "b">24<\p>
<list name ="C">
    <item>
            <cA>20<\cA>
            <cB>42<\cB>
            <cC>55<\cC>
    <\item>
    <item>
            <c1>21<\c1>
            <c2>43<\c2>
            <c3>58<\c3>
    <\item>
<\list>
<p name = "D">44<\p>
<p name = "e">32<\p>

期望输出为:

Object {'a':'48', 
        'b':'24',
        'cA':'20', 
        'cB':'42', 
        'cC':'55',
        'c1':'21', 
        'c2':'43', 
        'c3':'58'
        'd':'44',
        'e':'32'}

Tags: 文件name列表字典objectxmlitem结构
1条回答
网友
1楼 · 发布于 2024-04-19 21:16:01

假设您有固定的深度并且包含“扁平”字典(我知道这是很多“假设”),您可以迭代输入dict并检查值的类型

如果值是list,则用列表中的项更新输出dict,否则用原始项更新

d= {'a1': '48',
'b': '24',
'c':[{'cA':'20', 'cB':'42', 'cC':'55'}, {'c1':'21', 'c2':'43', 'c3':'58'}],
'd':'44',
'e':'32'}

new_d = {}
for k,v in d.items():
    if isinstance(v,list):
        for v1 in v:
            new_d.update(v1)
    else:
        new_d[k] = v

结果:

{'c2': '43', 'a1': '48', 'c3': '58', 'b': '24', 'cC': '55', 'd': '44', 'cA': '20', 'cB': '42', 'e': '32', 'c1': '21'}

相关问题 更多 >