pass_al = [[6,1,7],[6,1,7],[6,2,7],[6,3,7],[6,3,7],[6,4,7],[6,3,7],[6,4,7],[6,1,7],[6,5,7],[6,2,7]]
pas_a_order = ['p2','p1','p3','p2','p1','p3','p4','p5','p6','p5','p8']
dealer = ['PLW48150306', 'V14090921', 'PLW48150306', 'RUC29210220', 'KZA86210612', 'PLW48150306', 'KZA67201114','GRA01191126', 'KZA51190302', 'V01090112', 'BYB01210423', 'V27100515', 'V01090112', 'EUP28210115', 'N57130105', 'RUM78210304', 'RUN70150717', 'KZA67201114', 'RUM51210605', 'Y77070221', 'RUY68181027', 'KZA28210429', 'RUM777210109', 'V08130323', 'EUP94201127', 'LTV19150313', 'ARM97190913', 'UAK57210617', 'RUS22190708', 'RUN10210618', 'LTV02141024', 'KGB88200815']
pas_a_order = [i[1] for i in pass_al]
pass_l_set = list(set(pas_a_order)) # 去重 ,maybe redundant
pass_l_set.sort(key=pas_a_order.index) # pass_al -> pas_a_order,get a list of table a pass order ,maybe redundant
l_a_order = [k[1] for k in pass_al]
# 最优重复值归类组合方法
set_dealer = list(set(dealer))
set_dealer.sort(key=dealer.index) # 这1步只是为排序后方便人工检查结果,没有也不影响成果的。
a = np.array(dealer)
tt = []
for i in set_dealer:
i_l = np.where(a==i)
tt.append(list(i_l[0]))
print(tt)
# 中等和笨办法都是稍微有bug,但是之前能运行成功的 todo
# 中等重复值归类组合方法
dealer = [j[3] for j in pass_al]
dealer_sort = [j for j in set(_ for _ in dealer)]
dealer_sort.sort(key=dealer.index)
fing_set = []
for index,j in enumerate(dealer_sort):
l_t = []
try:
while True:
index = dealer.index(j,index)
l_t.append(index)
index += 1
except Exception as e:
pass
fing_set.append(l_t)
# 每次找到重复值后,下次就在它的index += 1 后继续找,代码不少但比笨办法快不少
print(fing_set)
# 笨办法,2个相同列表遍历其中一个,每个元素都在另一个上穷尽找相同,最后对结果去重。
pl = []
deal_fing = []
for j in pass_l_set:
p_ind = l_a_order.index(j) # 找到合格行所在👈index后,找对应的经销商编号(dealer和l_a_order所在行index完全相同且l_a_order没有重复)
pl.append(p_ind)
deal_fing.append([index for index,x in enumerate(dealer) if x == dealer[p_ind]]) # 获取等于dealer[p_ind](合格经销商编号)的所有下标
# 针对遍历会重复出现结果,不能对dealer去重,否则会导致[index for index,x in enumerate(dealer) if x == dealer[p_ind]]
# 无法找到同一个元素的>=1个下标,只能对结果去重。
# 对deal_fing去重,生成合格 index of F$列表.
fing_set = [list(j) for j in set(tuple(_) for _ in deal_fing)]
fing_set.sort(key=deal_fing.index) # 让去重后的数组顺序和deal_fing一致
print(fing_set) # get all the same numnber of dealer index