【问题标题】:Comparing properties on a list of objects to a string list将对象列表上的属性与字符串列表进行比较
【发布时间】:2022-01-07 16:54:47
【问题描述】:

给定一个对象列表,看起来有点像下面的伪代码:

class myObj:
    self.init(i, s):
        myInt = i
        myString = j

我们对列表进行伪编码,其中一个具有如下重要属性:

Mario = [MyObj(0, 'foo1'), MyObj(0, 'foo2'), MyObj(0, 'foo3')]
Luigi = ['bar1', bar2']

然后我们尝试从Mario 中删除与Luigi 中的字符串不匹配的任何MyObj

for coin in Mario:
    if coin.myString not in Luigi:
        Mario.remove(coin)

问题是,这只循环两次,然后退出,len(Mario) == 1,而不是零。

使用

Peach = [(myObj)x for x.myString in Mario if x not in Luigi]

错误:"[" was not closed

如何将 Luigi 中的字符串与 Mario 的所有 myStrings 进行比较,并丢弃不适合的对象?

我检查了以下 SO 问题,但没有任何帮助: Remove all values within one list from another list?

Comparing list of objects to a string

Remove all the elements that occur in one list from another

【问题讨论】:

  • 您希望(myObj)xfor x.myString in ... 做什么?这不是有效的语法。

标签: python python-3.x


【解决方案1】:

所以,我已经为此苦苦挣扎了 2 天,当我输入它时,我想到了一个解决方案。

如果我使用List Comprehension,我可以执行以下操作:

    Peach = [coin for coin in Mario if coin.myString in Luigi]

这会返回正确的对象,而且看起来它也保留了顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2018-09-07
    • 1970-01-01
    • 2015-09-06
    • 2018-04-06
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多