कुशल डिडुप्लीकेशन में अजगर

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.

यह आसानी से हासिल की है के साथ अजगर सेट और एक सूची बनाएँ. लाभ में अजगर का उपयोग कर सेट है कि संचालन कर रहे हैं बहुत तेजी से होने के कारण हैशिंग के तत्वों.

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

एनबी. अधिक उपयोगी हो सकता है के रूप में शब्दकोश समझ:

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

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में