需要解决Python逻辑任务

发布于 2025-02-10 07:37:23 字数 897 浏览 1 评论 0原文

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 = []

我需要生成一个具有此规则的新数组:如果DateTime差异少于5秒,则没有相同名称的元素

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 = []

I need to generate a new array with this rule: there were no elements with the same name if they have a datetime difference of less than 5 seconds

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初见你 2025-02-17 07:37:23

也许尝试使用其他类确定和存储数组

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())

Perhaps try using another class to determine and store arrays

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())

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文