我有以下列表:
('1', ['/home/test34', '/home/test33'])
我需要按如下方式附加列表(x
是时间戳):
('1', ['/home/test34',x], ['/home/test33',x])
我使用此功能,mylist
是defaultdict
:
mylist[name].append(dirpath)
mylist[name].append(creation_time)
当我使用上述内容时,它提供以下内容:
('1', ['/home/test34',x, '/home/test33',x])
我需要找到一种按创建日期(时间戳x
)对列表进行排序的简单方法。
处理这个问题的最佳方法是什么?
答案 0 :(得分:1)
在Python3.5 +中,您还可以使用扩展的可迭代解包
lst = [('1', ['/home/test34', '/home/test33']), ...]
result = [(a, *[(path, timestamp) for path in b]) for a, b in lst]
# [('1', ('/home/test34', 'some timestamp'), ('/home/test33', 'some timestamp')), ...]
答案 1 :(得分:0)
如果插入(timestamp, path)
对而不是单独的对象,则可以使用tuple
顺序对新列表进行排序。 (可选)您可以在排序后删除时间戳。
这里我不知道你的时间戳输入是什么样的,所以我用整数替换它们。
lst = ['/home/test34', 2], ['/home/test33', 1], ['/home/test35', 3]
def sorted_by_timestamp(lst):
timestamp_path = sorted((timestamp, path) for path, timestamp in lst)
return [timestamp for _, timestamp in timestamp_path]
print(sorted_by_timestamp(lst)) # ['/home/test33', '/home/test34', '/home/test35']