#python-3.x
Вопрос:
Я довольно новичок в программировании, поэтому, пожалуйста, игнорируйте любые глупые ошибки. У меня есть этот список словаря, в котором есть список устройств, подключенных к ноутбуку. В выводе мне просто нужны уникальные записи за день , допустим, устройство A подключается 3 раза в день, в списке вывода должны быть только те, которые есть. поэтому сначала я должен проанализировать дату из объекта даты и времени в списке ниже и просто поискать дубликаты.
помощь оценена по достоинству !
devices = [
{'Device Type': 'USB Drive', 'Vendor Id': '05E3', 'Product Id': '0749', 'Serial Number': "'000000001539'", 'Date': '10/19/21 10:32 PM', 'Action': 'Full Access', 'Device': 'CNP150'},
{'Device Type': 'iOS', 'Vendor Id': '05AC', 'Product Id': '12A8', 'Serial Number': "'ABCD'", 'Date': '10/14/21 12:27 AM', 'Action': 'Full Access', 'Device': 'CNP012'},
{'Device Type': 'iOS', 'Vendor Id': '05AC', 'Product Id': '12A8', 'Serial Number': "'ABCD'", 'Date': '10/14/21 5:38 AM', 'Action': 'Full Access', 'Device': 'CNP012'},
{'Device Type': 'iOS', 'Vendor Id': '05AC', 'Product Id': '12A8', 'Serial Number': "'ABCD'", 'Date': '10/14/21 11:59 PM', 'Action': 'Full Access', 'Device': 'CNP012'},
{'Device Type': 'iOS', 'Vendor Id': '05AC', 'Product Id': '12A8', 'Serial Number': "'748123d6d86dd4173371362201a0d8d250145fbf'", 'Date': '10/17/21 6:59 AM', 'Action': 'Full Access', 'Device': 'CNP011'}]
результат должен быть —
{'Device Type': 'USB Drive', 'Vendor Id': '05E3', 'Product Id': '0749', 'Serial Number': "'000000001539'", 'Date': '10/19/21 10:32 PM', 'Action': 'Full Access', 'Device': 'CNP150'},
{'Device Type': 'iOS', 'Vendor Id': '05AC', 'Product Id': '12A8', 'Serial Number': "'ABCD'", 'Date': '10/14/21 11:59 PM', 'Action': 'Full Access', 'Device': 'CNP012'},
{'Device Type': 'iOS', 'Vendor Id': '05AC', 'Product Id': '12A8', 'Serial Number': "'748123d6d86dd4173371362201a0d8d250145fbf'", 'Date': '10/17/21 6:59 AM', 'Action': 'Full Access', 'Device': 'CNP011'}]
Ответ №1:
Вы можете использовать функцию groupby
из модуля itertools
для группировки по дате. Сначала создайте функцию, которая извлекает дату из записи списка:
def get_date(e):
return e['Date'].split()[0]
Отсортируйте список, используя эту функцию в качестве ключа ( groupby
требуется, чтобы последовательность, подлежащая группировке, была отсортирована), и сгруппируйте ее с помощью той же функции. Возьмите первый предмет из каждой группы:
from itertools import groupby
[list(group)[0] for _,group in groupby(sorted(devices, key=get_date),
key=get_date)]