删除在列表中出现多次的元素,只留下一个元素

时间:2017-11-17 18:48:03

标签: python-2.7

我有一个小问题。 如何检查列表是否具有相同的元素,如果列表具有相同的元素,如何在列表中只留下其中一个元素?

例如,我写了这段代码:

def courses_per_student(tuple_lst):
    courses={}
    new_tuple_lst=[]
    for i in range(len(tuple_lst)):
            new_tuple_lst.append((str(tuple_lst[i][0]).lower(),(str(tuple_lst[i][1]).lower())))
    for m in new_tuple_lst:      
       if not courses.has_key(m[0]):
            courses[m[0]]=[m[1]]
       else:
           courses[m[0]]=courses[m[0]]+[m[1]]
    return courses

适用于:courses_per_student([(" Rina","数学"),(" Yossi","化学"),(" Riki"," python"),(" Rina","数学"),(" ; Yossi"," biology")]) 的返回: {' rina':['数学','数学'],' yossi':['化学',& #39;生物学'],' riki':[' python']}

我想要那个'数学'只会在列表中出现一次。 三江源

2 个答案:

答案 0 :(得分:2)

def uniqode(list):
    demolist = []
    for el in list:
        if el in demolist:
            continue
        demolist.append(el)
    return demolist

答案 1 :(得分:1)

...

        for m in new_tuple_lst:      
           if not courses.has_key(m[0]):
                courses[m[0]]=[m[1]]
           elif m[1] not in courses[m[0]]:
               courses[m[0]]=courses[m[0]]+[m[1]]

如果订单无关紧要,则使用set而不是list也应该这样做。