如果键在一个范围内匹配,则在字典中查找值

时间:2015-05-12 10:09:51

标签: python list python-3.x dictionary

我有一个列表和一本字典:

l = [1, 4, 22, 33]
dict = {1: 'red', 17: 'green', 33: 'blue'};

我的目标是返回一个新的列表,该列表由与l中每个元素关联的值(颜色)组成,如果它在keykey+16之间。

我知道如果列表的元素与字典中的键匹配,如何检索值,但我不知道如何将每个键视为范围并为l中的每个元素指定颜色。

预期输出为:

['red', 'red', 'green', 'blue']

我知道通过从dict生成一个列表,我可以迭代这两个列表,轻松找到一个范围内的值。问题是我会在每个列表中使用超过80,000个元素中的两个,所以时间太长了,我认为字典会更好。

1 个答案:

答案 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']

基本上,这会映射来自例如116包括1,从1732包括17等每个数字等。