【发布时间】:2017-12-21 06:31:11
【问题描述】:
我想返回具有唯一 ID 的元组列表,但特别保留最近日期的元组。
唯一 ID 位于每个元组的第一个元素中(即 1,2,3,4)。
日期存在于每个元组的多个元素中(元组的第 3 个元素和第 6 个元素)。
a = [(1,'Y', 'rat', datetime.datetime(2016, 12, 12, 0, 0), 'N', None),
(2,'Y', 'ox', datetime.datetime(2017, 9, 4, 0, 0), 'N', None),
(1,'N', None, None, 'Y', datetime.datetime(2017, 9, 17, 0, 0)),
(2,'N', None, None, 'Y', datetime.datetime(2017, 3, 16, 0, 0)),
(3,'Y', 'tiger', datetime.datetime(2013, 1, 18, 0, 0), 'N', None),
(4,'N', None, None, 'Y', datetime.datetime(2017, 10, 3, 0, 0))]
我期望的输出是:
b = [(1,'N', None, None, 'Y', datetime.datetime(2017, 9, 17, 0, 0)),
(2,'Y', 'ox', datetime.datetime(2017, 9, 4, 0, 0), 'N', None),
(3,'Y', 'tiger', datetime.datetime(2013, 1, 18, 0, 0), 'N', None),
(4,'N', None, None, 'Y', datetime.datetime(2017, 10, 3, 0, 0))]
我已将元组放入字典并使用 groupby 进行排序。
from itertools import groupby
dict={}
f = lambda x: x[0]
for key, group in groupby(sorted(a, key=f),f):
dict[key] = list(group)
这是字典输出:
{1: [(1, 'Y', 'rat', datetime.datetime(2016, 12, 12, 0, 0), 'N', None),
(1, 'N', None, None, 'Y', datetime.datetime(2017, 9, 17, 0, 0))],
2: [(2, 'Y', 'ox', datetime.datetime(2017, 9, 4, 0, 0), 'N', None),
(2, 'N', None, None, 'Y', datetime.datetime(2017, 3, 16, 0, 0))],
3: [(3, 'Y', 'tiger', datetime.datetime(2013, 1, 18, 0, 0), 'N', None)],
4: [(4, 'N', None, None, 'Y', datetime.datetime(2017, 10, 3, 0, 0))]}
从这一步开始,我无法将想要的字典值提取到新列表中。
提前感谢您的帮助!
【问题讨论】:
-
欢迎来到stackoverflow!如果您提供您为解决问题而编写的代码的 sn-p,您更有可能从社区获得帮助。
-
“保留最近日期的元组”是什么意思?放在哪里?
-
@sam-pyt 我想将元组放入一个新列表 - 抱歉不清楚,我将编辑我的问题以使其更清晰。
-
mfn,您的
ids 是小数字还是可以是任何数字?
标签: python