一意のIDを持つタプルのリストを返したいが、特に最新のタプルを保持する。最大値に基づいて一意の要素を持つタプルのリストを返すにはどうすればよいですか?
一意のIDは、各タプルの最初の要素(1,2,3,4)にあります。
日付は、各タプルの1つ以上の要素に存在します(第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を使用して並べ替えられました。
{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))]}
私はトラブル私は新しいリストにしたい辞書の値を抽出が生じています。この段階から:
from itertools import groupby
dict={}
f = lambda x: x[0]
for key, group in groupby(sorted(a, key=f),f):
dict[key] = list(group)
これは、辞書の出力です。
ご協力いただきありがとうございます。
はStackOverflowのへようこそ!あなたが問題を解決しようとしたコードスニペットを提供すれば、コミュニティからの支援を得る可能性は非常に高いです。 – Maciej
「最新の日付でタプルを保つ」とはどういう意味ですか?どこに? –
これは密接に関連している可能性があります:https://stackoverflow.com/questions/3922644/find-oldest-youngest-datetime-object-in-a-list#3922675 – jmunsch