defaultdict为键添加更多值

时间:2018-06-02 00:25:03

标签: python python-3.x

我有以下列表:

('1', ['/home/test34', '/home/test33'])

我需要按如下方式附加列表(x是时间戳):

('1', ['/home/test34',x], ['/home/test33',x])

我使用此功能,mylistdefaultdict

mylist[name].append(dirpath)
mylist[name].append(creation_time)

当我使用上述内容时,它提供以下内容:

('1', ['/home/test34',x, '/home/test33',x])

我需要找到一种按创建日期(时间戳x)对列表进行排序的简单方法。 处理这个问题的最佳方法是什么?

2 个答案:

答案 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']