如何在特定位置的结构中插入元组?

时间:2019-05-23 00:33:40

标签: python tuples

我目前具有以下结构:

[('file_name', '', '', {'Key': [(msg_1), (msg_2)]})]

我要插入以下元组:

(time.struct_time(tm_year=2019, tm_mon=5, tm_mday=22, tm_hour=20, tm_min=19, tm_sec=54, tm_wday=2, tm_yday=142, tm_isdst=1))

我最终得到的结果是:

[('file_name', (time.struct_time(tm_year=2019, tm_mon=5, tm_mday=22, tm_hour=20, tm_min=19, tm_sec=54, tm_wday=2, tm_yday=142, tm_isdst=1),'', '', {'Key': [(msg_1), (msg_2)]}))]

请注意,time.struct_time元组的右括号位置必须在列表结束之前(以包围msg1msg2的其余内容)。

我尝试了使用zip并使用list转换为insert的各种方法,

1 个答案:

答案 0 :(得分:0)

在python中,组是不可变的对象。不可能更改现有的元组。请看看这个answer

但是,您可以创建另一个元组:

a = [('file_name', '', '', {'Key': [(msg_1), (msg_2)]})]
b = (time.struct_time(tm_year=2019, tm_mon=5, tm_mday=22, tm_hour=20, tm_min=19, tm_sec=54, tm_wday=2, tm_yday=142, tm_isdst=1))
c = [a[0][0], b, *a[0][1:]]

请注意,*之前的a[0][1:]将选定的元组切片解包。