Python如果匹配则获取列表元素

时间:2016-06-14 16:59:47

标签: list python-3.x

给出以下列表:

colors=['#c85200','#5f9ed1','lightgrey','#ffbc79','#006ba4','dimgray','#ff800e','#a2c8ec'
,'grey','salmon','cyan','silver']

这个清单:

Hospital=['a','b','c','d']

根据列表的长度得到颜色数量后 - '医院':

num_hosp=len(Hospital)
colrs=colors[:num_hosp]

colrs
['#c85200', '#5f9ed1', 'lightgrey', '#ffbc79']

...并将列表压缩在一起:

hcolrs=zip(Hospitals,colrs)

接下来,如果提供一份来自“医院”的一家或多家医院的列表,我希望能够从一个或多个颜色中选择一种或多种颜色。

像这样:

newHosps=['a','c'] #input
newColrs=['#c85200','lightgrey'] #output

提前致谢!

1 个答案:

答案 0 :(得分:1)

zip的结果传递给dict构造函数,以便简单/快速地进行查找:

# Don't need to slice colors; zip stops when shortest iterable exhausted
hosp_to_color = dict(zip(Hospitals, colors))

然后使用它:

newHosps = ['a','c']
newColrs = [hosp_to_color[h] for h in newHosps]