Python 根据特定条件从列表中删除重复值

Python 根据特定条件从列表中删除重复值,python,list,unique,Python,List,Unique,我有一个变量列表如下 roll_off_m4** ov_offer_desc_m4 curr_ov_tier_desc2_m4 income age vid_offer_up_flag_m3 vidpromo_rng_m4* ovpromo_rng_m4* ovpromo_rng_m3* roll_off_m3 roll_off_m2 oolpromo_rng_m3* ov_offer_group_v2_desc_m4 oolpromo_rng_m2* rsdvr_orig_m2 vidprom

我有一个变量列表如下

roll_off_m4**
ov_offer_desc_m4
curr_ov_tier_desc2_m4
income
age
vid_offer_up_flag_m3
vidpromo_rng_m4*
ovpromo_rng_m4*
ovpromo_rng_m3*
roll_off_m3
roll_off_m2
oolpromo_rng_m3*
ov_offer_group_v2_desc_m4
oolpromo_rng_m2*
rsdvr_orig_m2
vidpromo_rng_m2*
ovpromo_rng_m2*
有些变量,如用*标记的变量,本质上是相同的,但取其值的月份可能不同。 就像2月的滚动是m2,3月是m3,4月是m4。 如果存在多个月的值,我只需要选择与m2对应的变量。 如果只有一个月的值,我只选择它

对于年龄和收入等变量,由于没有与之相关的月份信息,所以我只按原样选择它们

所有这些拾取的值都会附加到最终的变量列表中

有人能帮我用python做这个吗?

编辑: 我已经更新了功能,以实现您在评论中指定的结果

我使用的是一个相当长的列表理解,因此我将快速概述将项目添加到输出中所检查的内容:

  • 变量包含一个数字,变量名中有(“\m”+月号)
  • 变量中没有数字(例如“年龄”)
  • 没有其他具有不同月份的变量示例
  • 因此,对于月变量“2”,运行下面的代码将输出以下内容:

    ['roll_off_m4**', 'ov_offer_desc_m4', 'curr_ov_tier_desc2_m4', 'income', 'age', 'vid_offer_up_flag_m3', 'roll_off_m2', 'ov_offer_group_v2_desc_m4', 'oolpromo_rng_m2*', 'rsdvr_orig_m2', 'vidpromo_rng_m2*', 'ovpromo_rng_m2*']
    
    完整代码:


    你好@PL200。。谢谢。但是,这不包括ov_offer_group_v2_desc_m4这样的变量,因为没有其他月份与之相关,所以也应该包含在输出中。@ShuvayanDas表示歉意,但结尾的“_m4”不是表示第4个月(4月)与之相关吗?,,是的。但是,正如我在问题中提到的,如果存在单月值,则按原样处理。只有当m2的其他月份出现时,我才需要选择m2月份。如果问题不清楚,我很抱歉。这不是很清楚。那么你是说如果只有一个“m6”的例子,那么它也应该被选取?是的@PL200。。是的。。原因是,几个月一起出现基本上意味着重复。所以,只需要选择m2。
    # 're' is imported for determining if the month number is in the variable
    import re
    
    # Your initial list of variables
    my_list =   ['roll_off_m4**',
                 'ov_offer_desc_m4',
                 'curr_ov_tier_desc2_m4',
                 'income',
                 'age',
                 'vid_offer_up_flag_m3',
                 'vidpromo_rng_m4*',
                 'ovpromo_rng_m4*',
                 'ovpromo_rng_m3*',
                 'roll_off_m3',
                 'roll_off_m2',
                 'oolpromo_rng_m3*',
                 'ov_offer_group_v2_desc_m4',
                 'oolpromo_rng_m2*',
                 'rsdvr_orig_m2',
                 'vidpromo_rng_m2*',
                 'ovpromo_rng_m2*']
    
    # This function will return the list for the month specified
    def get_data_for_month(month_number, variable_list):
        return [variable for variable in variable_list if (bool(re.search(r'\d', variable)) == True and ("_m" + str(month_number)) in variable) or (bool(re.search(r'\d', variable)) == False) or (variable.replace(variable[variable.find("_m"):variable.find("_m")+3], "_m2")) not in variable_list]
    
    
    #function call
    output = get_data_for_month(2, my_list)
    
    #output is printed
    print(output)