我的清单如下:
[(220921998, 2426),
(220921999, 2427),
(220922000, 2428),
(220922001, 2429),
(220922563, 2991),
(220922564, 2992),
(220922565, 2993),
(220922566, 2994),
(220922575, 3003),
(220923958, 4386),
(220924161, 4589),
(220924170, 4598),
(220924171, 4599),
(220924172, 4600),
(220924173, 4601),
(220924912, 5340),
(220926340, 6768),
(220926341, 6769),
(220926342, 6770),
(220926343, 6771),
(220926344, 6772),
(220927052, 7480),
(220927053, 7481),
(220927054, 7482),
(220927055, 7483),
(220927056, 7484),
(220927069, 7497),
(220927071, 7499)]
我想根据第二个数字向列表添加一个字符串。如果列表中的第二个数字在其他第二个数字的20左右以内,则将为其分配相同的“项目”名称。见下文:
[(220921998, 2426,project1),
(220921999, 2427,project1),
(220922000, 2428,project1),
(220922001, 2429,project1),
(220922563, 2991,project2),
(220922564, 2992,project2),
(220922565, 2993,project2),
(220922566, 2994,project2),
(220922575, 3003,project3),
(220923958, 4386,project4),
(220924161, 4589,project5),
(220924170, 4598,project5),
(220924171, 4599,project5),
(220924172, 4600,project5),
(220924173, 4601,project5),
(220924912, 5340,project6),
(220926340, 6768,project7),
(220926341, 6769,project7),
(220926342, 6770,project7),
(220926343, 6771,project7),
(220926344, 6772,project7),
(220927052, 7480,project8),
(220927053, 7481,project8),
(220927054, 7482,project8),
(220927055, 7483,project8),
(220927056, 7484,project8),
(220927069, 7497,project8),
(220927071, 7499,project8)]
我已经尝试过了groupby
,但是找不到范围的方法。任何帮助都会很棒。谢谢
下面的简单解决方案如何:
data = [(220921998, 2426),
(220921999, 2427),
(220922000, 2428),
(220922001, 2429),
...
(220922563, 2991),
(220922564, 2992)]
ref = 0
cnt = 0
out = []
for dt in data:
if dt[1]-ref > 20:
cnt += 1
ref = dt[1]
out.append((dt[0],dt[1],'project%d'%cnt))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句