我有一个列表和一本字典:
l = [1, 4, 22, 33]
dict = {1: 'red', 17: 'green', 33: 'blue'};
我的目标是返回一个新的列表,该列表由与l
中每个元素关联的值(颜色)组成,如果它在key
到key+16
之间。
我知道如果列表的元素与字典中的键匹配,如何检索值,但我不知道如何将每个键视为范围并为l
中的每个元素指定颜色。
预期输出为:
['red', 'red', 'green', 'blue']
我知道通过从dict生成一个列表,我可以迭代这两个列表,轻松找到一个范围内的值。问题是我会在每个列表中使用超过80,000个元素中的两个,所以时间太长了,我认为字典会更好。
答案 0 :(得分:2)
您只需使用整数除法即可完成此操作:
>>> l = [1, 4, 22, 33]
>>> dct = {1: 'red', 17: 'green', 33: 'blue'} # don't name your own dictionary dict
>>> [dct[16*((x-1)//16)+1] for x in l]
['red', 'red', 'green', 'blue']
基本上,这会映射来自例如1
至16
包括1
,从17
到32
包括17
等每个数字等。