遍历整数列以查看该值是否包含在其他列的范围内

时间:2019-12-10 00:20:12

标签: python pandas

我有两个列表:一个列表包含整数,第二个列表包含范围列表。

以下是这些列表的定义:

range_list = [range(0,7), range(7,12), range(12,22), etc.]
integer_list = [9, 3, 100, etc.]  

两个列表的大小相同。

我想根据range_list所在的范围在我的integer_list中标记整数。已经存在一个label_list,以便range_list中的第n个范围对应于label_list中的第n个标签。我的意思是,如果我的整数在第一个范围内(range_list的第零个元素),它将收到label_list [0]的标签。我的问题是如何正确地遍历integer_list和range_list。

我自己解决了这个问题

empty_list = [] #list where the labels will be appended to
for i in integer_list:
  for j in range_list:
      if i in j:
         empty_list.append(label_list[j])
         break
      else:
        continue  

使用这种方法,似乎我将陷入无限循环(或者至少要花费很多时间)。

如果有助于弄清label_list定义为什么,就这样:

label_list = ['Dementia', 'Schizophrenia', 'Diabetes I', etc..]

1 个答案:

答案 0 :(得分:2)

每当有关联时,您可能应该考虑使用字典。我只是将范围扩大了,所以您有了一个从int到label的字典。然后创建一个字典,将int与查找到的值相关联。

range_list = [range(0,7), range(7,12), range(12,22)]
label_list = ['Dementia', 'Schizophrenia', 'Diabetes I']
integer_list = [9, 3, 10]

table = {}
for int_range, label in zip(range_list, label_list):
    for i in list(int_range):
        table[i] = label

{i: table[i] for i in integer_list}

输出

{9: 'Schizophrenia', 3: 'Dementia', 10: 'Schizophrenia'}

请注意,由于您未定义包含100的范围,因此我将示例更改为使用int 10而不是100。