Python 3:检查列表是否包含具有特定字符串值的对象

时间:2018-11-30 23:44:07

标签: python arrays python-3.x python-2.7

我得到了以下字符串列表:

json = ['red', 'blue', 'green']

以及此不变的颜色列表:

MY_COLORS = [Color('blue', 'www.example.com'), Color('red', 'www.example2.com')]

class Color:
    def __init__(self, name: str, url: str):
        self.name = name
        self.url = url

现在,我想检查常量列表中是否有任何对象,其名称值与字符串列表中的任何字符串匹配。 如果是这样,我想将所有匹配的对象作为列表返回以获得此结果:

some_magic(MY_COLORS, json) == [objectred, objectblue]
# no object with name green as its not inside my "MY_COLORS" constant

我尝试了Check if List of Objects contain an object with a certain attribute value中所建议的“ any”,但是并不能解决返回所有匹配对象列表的问题。

2 个答案:

答案 0 :(得分:3)

您可以这样做:

class Color:
    def __init__(self, name: str, url: str):
        self.name = name
        self.url = url

MY_COLORS = [Color('blue', 'www.example.com'), Color('red', 'www.example2.com')]

json = ['red', 'blue', 'green']
set_json = set(json)

result = [color for color in  MY_COLORS if color.name in set_json]
print(result)

答案 1 :(得分:0)

len([color for color in MY_COLORS if color.name in json]) == 0 如果颜色名称与json变量中列出的颜色之一匹配,则返回True,否则返回False