我得到了以下字符串列表:
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”,但是并不能解决返回所有匹配对象列表的问题。
答案 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
。