我正在尝试根据tuples
中的各种值创建一组dict
。使用下面的示例,它可以工作到_10
integer
。因此_9
以上的任何内容都会被覆盖。例如,_12
变成_2
。
time = [1]
d = ({
'A1_S' : [10],
'A2_S' : [20],
'A3_S' : [30],
'A4_S' : [40],
'A5_S' : [50],
'A6_S' : [60],
'A7_S' : [70],
'A8_S' : [80],
'A9_S' : [90],
'A10_S' : [100],
'A11_S' : [110],
'A12_S' : [120],
'A13_S' : [130],
'A14_S' : [140],
'A15_S' : [150],
})
tuples = [((t, k.split('_')[0][0], int(k.split('_')[0][1]), k.split('_')[1]), v[i]) for k,v in d.items() for i,t in enumerate(time)]
输出:
[((1, 'A', 1, 'S'), 10), ((1, 'A', 2, 'S'), 20), ((1, 'A', 3, 'S'), 30), ((1, 'A', 4, 'S'), 40), ((1, 'A', 5, 'S'), 50), ((1, 'A', 6, 'S'), 60), ((1, 'A', 7, 'S'), 70), ((1, 'A', 8, 'S'), 80), ((1, 'A', 9, 'S'), 90), ((1, 'A', 1, 'S'), 100), ((1, 'A', 1, 'S'), 110), ((1, 'A', 1, 'S'), 120), ((1, 'A', 1, 'S'), 130), ((1, 'A', 1, 'S'), 140), ((1, 'A', 1, 'S'), 150)]
预期输出:
[((1, 'A', 1, 'S'), 10), ((1, 'A', 2, 'S'), 20), ((1, 'A', 3, 'S'), 30), ((1, 'A', 4, 'S'), 40), ((1, 'A', 5, 'S'), 50), ((1, 'A', 6, 'S'), 60), ((1, 'A', 7, 'S'), 70), ((1, 'A', 8, 'S'), 80), ((1, 'A', 9, 'S'), 90), ((1, 'A', 10, 'S'), 100), ((1, 'A', 11, 'S'), 110), ((1, 'A', 12, 'S'), 120), ((1, 'A', 13, 'S'), 130), ((1, 'A', 14, 'S'), 140), ((1, 'A', 15, 'S'), 150)]
答案 0 :(得分:0)
问题在这里:
int(k.split('_')[0][1]
您只需要在'A'之后抓一个字符,这意味着您要抓取'A'之后的所有字符直到'_'。您可以使用它来抓取所有字符,直到拆分为止:
int(k.split('_')[0][1:]
所以整个事情应该是:
tuples = [((t, k.split('_')[0][0], int(k.split('_')[0][1:]), k.split('_')[1]), v[i]) for k,v in d.items() for i,t in enumerate(time)]