如何将3项元组转换为字典

2024-10-02 06:34:27 发布

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

我需要将具有嵌套元组的元组转换为具有字典的字典

b = ('abcm1', (
     ('mxcludm', '123'), 
     ('an1', 'abcaa'), 
     ('an2', 'dmf'), 
     ('an3', 'mf'), 
     ('an4', 'dfd'), 
     ('an5', 'asdfs'), 
     ('ou', 'tmst'), 
     ('output', 'ou'), 
     ('archi', (
         ('an1***an2', ''), 
         ('an2***an3', ''), 
         ('an3***an4', ''), 
         ('an4***an5', '')
      )
      ), 
      ('customer', '1'))
   )

我的预期出局了

{'abcm1': {
    'mxcludm':'123',
    'an1': 'abcaa', 
    'an2': 'dmf', 
    'an3': 'mf', 
    'an4': 'dfd', 
    'an5': 'asdfs', 
    'ou': 'tmst', 
    'output': 'ou', 
    'archi':{ 
            'an1***an2': '', 
            'an2***an3': '', 
            'an3***an4': '', 
            'an4***an5': ''
    },
    'customer': '1'
    }
}

对于2元组,我们可以直接传递

def Convert(tup, di): 
    di = dict(tup) 
    return di 
di = {} 
tup =  ('a2', 'aa'), ('i', 'aa'), ('w4', 'aa'), ('i5', 'aa')
print (Convert(tup, di))

当我继续操作时,我得到了太多的错误值,无法取消映射


Tags: 字典ouaa元组ditupdmfan1
1条回答
网友
1楼 · 发布于 2024-10-02 06:34:27

所需输出中有错误

'customer': 'dmfault' should be 'customer': '1'

这里有一个递归函数,可以处理任意级别的嵌套

代码

def convert(item): 
    if isinstance(item, str):
        return item
    
    # Key as string
    # Just need to convert value
    if isinstance(item[0], str):
        return {item[0]:convert(item[1])}  # convert value

    # Convert key & value as elements in dictionary di
    di = {}
    for x in item:
        di.update(convert(x))
    return di

测试

b = ('abcm1', (('mxcludm', '123'), ('an1', 'abcaa'), ('an2', 'dmf'), ('an3', 'mf'), ('an4', 'dfd'), ('an5', 'asdfs'), ('ou', 'tmst'), ('output', 'ou'), ('archi', (('an1***an2', ''), ('an2***an3', ''), ('an3***an4', ''), ('an4***an5', ''))), ('customer', '1')))

di = convert(b)
print(di)

输出

{'abcm1': {'mxcludm': '123', 'an1': 'abcaa', 'an2': 'dmf', 'an3': 'mf', 'an4': 'dfd', 'an5': 'asdfs', 'ou': 'tmst', 'output': 'ou', 'archi': {'an1***an2': '', 'an2***an3': '', 'an3***an4': '', 'an4***an5': ''}, 'customer': '1'}}

相关问题 更多 >

    热门问题