我有一个嵌套的元组:
nested_tup = [('15MAR18 103000', '15MAR18 103758'), ('15MAR18 120518', '15MAR18 121308')] etc...
每个元组中的第一个元素是开始日期,每个元组中的第二个元素是结束日期。
我想找到2个日期之间的时间差异,然后将答案作为每个元组中的第3个元素附加...到目前为止,我有以下内容:
for start, end in nested_tup:
after = datetime.strptime(end, '%d%b%y %H%M%S')
before = datetime.strptime(start, '%d%b%y %H%M%S')
duration = after - before
我需要将此持续时间值作为每个元组中的第3个元素附加..我不知道如何...
任何帮助表示感谢。
答案 0 :(得分:2)
这是一种方式:
for i, (start, end) in enumerate(nested_tup):
after = datetime.strptime(end, '%d%b%y %H%M%S')
before = datetime.strptime(start, '%d%b%y %H%M%S')
duration = after - before
nested_tup[i] += (duration, )
可能会更容易阅读:
f = '%d%b%y %H%M%S'
for i, (start, end) in enumerate(nested_tup):
nested_tup[i] += (datetime.strptime(end, f) - datetime.strptime(start, f), )
即使你不能改变tuple
个对象来附加新组件,你也可以使用tuple
连接+
个对象,它会从成分tuple
创建一个新的tuple
。 1}}对象,这对你手头的问题非常有用。
答案 1 :(得分:1)
您可以将地图与转化功能结合使用。
def convert(tup):
after = datetime.strptime(tup[1], '%d%b%y %H%M%S')
before = datetime.strptime(tup[0], '%d%b%y %H%M%S')
duration = after - before
return (tup[0], tup[1], duration)
ans = list(map(convert, nested_tup))
答案 2 :(得分:0)
元组是不可变的数据结构。所以你不能将值附加到元组。 Check out immutable sequence types.
这可能适合你,
strptime = lambda dt: datetime.strptime(dt, f)
[(start, end, strptime(end) - strptime(start)) for start, end in nested_tup]