import datetime
class Element(object):
name: str
datetime: datetime.datetime
def __init__(self, *args, **kwargs):
self.name = args[0]
self.datetime = args[1]
def __str__(self):
return self.name " " self.datetime.strftime("%d-%m-%Y %H:%M:%S")
e = Element("Name 1", datetime.datetime(2022, 1, 5, 20, 20, 20))
e2 = Element("Name 1", datetime.datetime(2022, 1, 5, 20, 20, 23))
e3 = Element("Name 2", datetime.datetime(2022, 2, 5, 19, 11, 10))
e4 = Element("Name 3", datetime.datetime(2022, 3, 5, 10, 15, 10))
e5 = Element("Name 3", datetime.datetime(2022, 3, 5, 10, 15, 8))
e6 = Element("Name 4", datetime.datetime(2022, 4, 7, 12, 12, 8))
e7 = Element("Name 4", datetime.datetime(2022, 4, 7, 12, 12, 20))
array = [e, e2, e3, e4, e5, e6, e7]
new_array = []
我需要使用此規則生成一個新陣列:如果它們的日期時間差小于 5 秒,則不存在具有相同名稱的元素
uj5u.com熱心網友回復:
也許嘗試使用另一個類來確定和存盤陣列
from datetime import datetime
class Arrays:
def __init__(self):
self.nodes = {}
def push(self, node):
if node.name in self.nodes:
for item in self.nodes[node.name]:
delta = node.time - item.time
seconds = 3600*24*abs(delta.days) - delta.seconds if delta.days < 0 else delta.seconds
if seconds >= 5:
self.nodes[node.name].append(node)
else:
self.nodes[node.name] = [node]
def get_array(self):
return [item for value in self.nodes.values() for item in value]
class Element(object):
def __init__(self, *args, **kwargs):
self.name = args[0]
self.time = args[1]
def __repr__(self):
return self.name " " self.time.strftime("%d-%m-%Y %H:%M:%S")
arr = Arrays()
for ele in [Element("Name 1", datetime(2022, 1, 5, 20, 20, 20)),
Element("Name 1", datetime(2022, 1, 5, 20, 20, 23)),
Element("Name 2", datetime(2022, 2, 5, 19, 11, 10)),
Element("Name 3", datetime(2022, 3, 5, 10, 15, 10)),
Element("Name 3", datetime(2022, 3, 5, 10, 15, 8)),
Element("Name 4", datetime(2022, 4, 7, 12, 12, 8)),
Element("Name 4", datetime(2022, 4, 7, 12, 12, 20))]:
arr.push(ele)
print(arr.get_array())
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496321.html
