如何展平嵌套元组?

时间:2015-12-24 13:30:39

标签: python python-3.x

如何将手机和电子邮件与此列表的对应名称相加:

list_key_value = [['Jibs', ('251871', 'jibs@stack.com')], 
                  ['Marco', ('0000000', 'marco@live.com')], 
                  ['Richard', ('099099', 'richar@hotmail.com')]]

像这样:

[['Jibs', '251871', 'jibs@stack.com'], 
 ['Marco', '0000000', 'marco@live.com'],
 ['Richard', '099099', 'richar@hotmail.com']]

因为它来自Python 3.5中的这个命令:

list_key_value=[ [k,v] for k,v in dct.items()]
print(list_key_value)

4 个答案:

答案 0 :(得分:6)

您希望解压缩嵌套列表,您可以在列表解析中使用多值解包,以实现该目标:

list_key_value=[[k,i,j] for k,(i,j) in dct.items()]

答案 1 :(得分:2)

在Python 3.5中你可以做到

list_key_value = [[name, *tp] for (name, tp) in list_key_value]

答案 2 :(得分:0)

确实更加丑陋的方法,但最终证明了手段的合理性。

我只是把它放在这里,没有伤害。

lst = [['Jibs', ('251871', 'jibs@stack.com')], ['Marco', ('0000000', 'marco@live.com')], ['Richard', ('099099', 'richar@hotmail.com')]]
new_lst = []
for elem in lst:

    temp_lst = []
    for i in elem:   

        if isinstance(i, tuple):
            temp_lst.extend(i)
        else:
            temp_lst.append(i)
    new_lst.append(temp_lst)
print new_lst

# [['Jibs', '251871', 'jibs@stack.com'], ['Marco', '0000000', 'marco@live.com'], ['Richard', '099099', 'richar@hotmail.com']]

答案 3 :(得分:0)

@TanveerAlam解决了这个问题,虽然@Kasramvd解决方案有待进一步解释:

[[i[0]]+list(i[1]) for i in list_key_value]