我有一个有序项目的列表,它会发生变化,我想提取列表颜色值,在本例中为[rrr,ggg,bbb]。r g和b是从0到255的颜色强度值。
这个列表可以像这个
o_list = [('d',2), ('color', {'col':[255,042,072]}), ('s',0), ('l',{'a':10, 'b':20})]
或者像这样。。。
o_list = [('color', {'col':[230,132,150]}), ('d',2), ('s',0), ('l',{'a':10, 'b':20})]
如果我使用索引位置,有时类型会是int,有时会是dict或list,或者int或tuple。
在列表[rrr,ggg,bbb]中搜索颜色并提取颜色的最快方法是什么?
我建议将列表转换为dict,然后获得颜色:
dict(o_list).get('color').get('col')
完全按照您的要求返回。
您可以使用filter()
和.get()
的组合,如下所示:
o_list = [('d',2), ('color', {'col':["050","050","050"]}), ('s',0), ('l',{'a':10, 'b':20})]
def filter_col_tuple(tup):
k,v = tup
if k == 'color':
return True
else:
return False
filtered = filter(filter_col_tuple, o_list)
print(next(filtered)[1].get('col'))
这样做的目的是创建一个可以迭代的过滤器对象(filtered
(。但是,它只有一个值,所以我们直接通过调用next()
来获得第一个值。然后我们使用[1]
来获得元组的第二个值,并使用.get()
来获得字典中关键字"col"的值。
我假设050
应该被视为一个字符串,因为它不是一个有效的整数。
额外的好处:在filter((中使用lambda也是可能的,如下所示:
o_list = [('d',2), ('color', {'col':["050","050","050"]}), ('s',0), ('l',{'a':10, 'b':20})]
filtered = filter(lambda x: x[0]=='color', o_list)
print(next(filtered)[1].get('col'))