当前位置: 首页 > 知识库问答 >
问题:

Python中对象属性的交集

孙文康
2023-03-14

所以我做了两组物体,就像这样。

class 4digits:
    def __init__(self, value):
        self.value = value
        self.first = (value - (value % 100)) / 100
        self.last = value % 100

这些都是4位数的对象,所以它就像。。。

object.value = 1234
object.first = 12
object.last = 34

如果我有2个集合,set1和set2,我想更新set1和set2,只包含set1具有与set2的第一个属性匹配的最后一个属性的对象。

例如第1组中的1234将与第2组中的3456匹配。

我可以很容易地将其作为列表而不是集合来完成,但如果我能够理解过程,集合会感觉效率更高,但不确定如何返回对象属性的交集。任何帮助。

编辑:因为我被要求编写代码,而我的假设并不是我真正在做的事情。

多亏了杰兹,我得到了这个答案:

def lastinfirst(list1, list2):
    firsts = set( l2.first for l2 in list2)
    newlist1 = [ l1 for l1 in list1 if l1.last in firsts]
    return newlist1

def firstinlast(list1, list2):
    lasts = set( l1.last for l1 in list1)
    newlist2 = [ l2 for l2 in list2 if l2.first in lasts]
    return newlist2

共有1个答案

谯嘉胜
2023-03-14

如果我正确理解了你想要什么,这应该可以:

# Get the set of unique boroughs in which people want rooms:
wantedboroughs = set( w.borough for w in wantrooms )

# Get all records for people who have rooms in those boroughs:
result = [ h for h in haverooms if h.borough in wantedboroughs ]

好吧,现在你把你的问题编辑成完全不是关于房间和行政区的。但也许你可以概括一下这里举例说明的原则。

 类似资料:
  • 问题内容: 如何在Python中遍历对象的属性? 我有一堂课: 现在,我可以通过执行以下操作获取我的信息: 我想要做的是像这样循环遍历for循环中的属性: 问题答案: 更新 对于python 3,您应该使用而不是 PYTHON 2 PYTHON 3 这将打印

  • 问题内容: 在Python中使用抽象属性实现以下Scala代码的最短/最优雅的方法是什么? Scala编译器强制使用的子类来定义“路径”。子类如下所示: 问题答案: Python有一个内置的异常,尽管直到运行时您都不会遇到该异常。

  • 我想建立一个本体模型,在那里我可以表示一个实体的缺失,可以这么说。例如,我希望有Rain和No_Rain,我将它们定义为不相交类。在此之后,我有了object属性has_rain。我想以某种方式能够推理出,对于同一个人来说,不可能同时拥有has_rain(雨)和has_rain(无雨)我已经搜索了很多,但是没有找到我问题的答案。也许我在什么地方错过了。对不起,如果我没有解释好一切,这是我的第一个问

  • Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统一的管理方案。 属性的__dict__系统 对象的属性可能来自于其类定义,叫做类属性(class attribute)。类属性可能来自类定义自身,也可能根据类定义继承来的。一个对象的属性还可能是该对象实例定义的,叫做对象属性(object attribute)。 对象的属性储存在对象的

  • 问题内容: 我创建了这个简单的GUI: 我启动并运行了UI。当我单击Grab按钮时,在控制台上出现以下错误: 为什么entryBox设置为None? 问题答案: 并且place在功能Entry对象和所有其他部件的回报None。在python中,执行此操作时.,表达式的结果为返回的值,因此。 你应该将其分成两行,如下所示: 这样,你就可以将参考存储在其中,并且可以按照你的期望进行布局。如果你以块的形

  • 问题内容: 这件事困扰了我一段时间。我为什么不能做: …虽然我可以执行以下操作? 这是什么规则?您能给我介绍一下吗? 问题答案: 您可以向具有的任何对象添加属性。 例如,没有它。 字符串和其他简单的内置对象也没有它。 使用类也没有它。 除非前面的声明适用,否则用定义的类都具有它。 如果使用/的对象没有/ ,通常是为了节省空间。例如,如果有一个命令,那就太过分了- 想象一下一个非常短的字符串的膨胀程