มีประสิทธิภาพเพียงพอ smooth scrolling deduplication ภาษาไพธอน

0

คำถาม

ฉันมีสติหน่อยรหัสที่แอททริบิวต์,ไปกันและธาตุของการรายชื่อเป็นคะแนน...ต้องทำเรื่องนี้ฉันต้องการที่จะทำอย่างนี้(ประยุกต์@item text character set รหัส):

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]]

ประเด็นก็คือถ้าคุณอ่านนี้ออกรหัสนั่นมันไม่ถูกปรับมาให้เหมาะจะเป็นใหญ่ enumeration(มากกว่า 7000 กลุ่มคนกับ 100 รายชื่อโดยกลุ่ม)...

ฉันหวังว่าจะมีใครสักคนสามารถช่วยฉัน? ขอบคุณมาก

1

คำตอบที่ดีที่สุด

3

IIUC คุณอยากได้ความยาวของที่ตั้งของความเป็นเอกลักษณ์ไม่ได้อยู่ในรายชื่อ already_chose ลบกับจำนวนของชื่ออยู่ already_chose.

นี่คืออย่างง่ายดายประสบความสำเร็จกับตั้งค่าปลั๊กอินสำหรับไพธอนและรายชื่อจะเข้าใจ คนประโยชน์ในการใช้ตั้งค่าปลั๊กอินสำหรับไพธอน,นั่นเป็นปฏิบัติการเร็วมากเนื่องจาก hashing ของธาตุหลัก-แล้วอีก

[[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ý
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่