【问题标题】:How to convert 3 item tuple to dictionary如何将 3 项元组转换为字典
【发布时间】:2021-02-20 10:52:24
【问题描述】:

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

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))

当我继续时,我得到了太多的值来解压

【问题讨论】:

  • d={b[0]:dict(b[1])} ???
  • 仅供参考...这仍然只是一个 2 项元组...只是您在元组中的第二项也是一个元组。
  • 这能回答你的问题吗? python tuple to dict
  • @MoyankPorwal--该解决方案不适用于 b 的嵌套结构。
  • @Nons--期望的值不应该是 'customer': '1' 而不是 'customer':'dmfault'?

标签: python tuples


【解决方案1】:

你想要的输出有错误

'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'}}

【讨论】:

    猜你喜欢
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多