효율적으로 중복 제거에서 Python

0

질문

내가 코딩 작은 코드들 특성,각 요소의 목록,다 이렇게 하려면 내가 이것을 할 필요가(간체 코드):

group={1:["Jack", "Jones", "Mike"],
       2:["Leo", "Theo", "Jones", "Leo"],
       3:["Tom", "Jack"]}

already_chose=["Tom","Mike"]
result=[]

for group_id in group:
    name_list = group[group_id]
    y=0;x=0
    repeat=[]
    for name in name_list:
        if name in already_chose:
            y+=1
        elif name not in repeat:
            x+=1
            repeat.append(name)
    score_group=x-y
    result.append([group_id,score_group])

출력: [[1, 1], [2, 3], [3, 0]]

문제입니다면,당신은 이것을 읽는 코드는 최적화되지 않음을 열거(7000 개 이상의 그룹과 100 이름 그룹에 의해)...

나는 누군가가 도움을 받을 수 있습니까? 많은 감사

1

최고의 응답

3

IIUC 얻을 원하는 길이의 설정의 고유 이름에 없 already_chose 마이너스 이름의 수에 already_chose.

이것은 쉽게 달성 python 트 목록을 이해합니다. 장점에서는 파이썬을 사용하여 설정하는 작업은 매우 빠르고로 인해 해시의 요소입니다.

[[k, len(set(v).difference(already_chose))-len(set(v).intersection(already_chose))]
 for k,v in group.items()]

출력: [[1, 1], [2, 3], [3, 0]]

NB. 유용할 수 있습니다로 사전력:

{k: len(set(v).difference(already_chose))-len(set(v).intersection(already_chose))
 for k,v in group.items()}

출력: {1: 1, 2: 3, 3: 0}

2021-11-14 19:21:50

몰랐어 세트().차이()!!!! Thk
BiMathAx STUDIO

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................