मैं एक आइटम की घटना को गिनना नहीं चाहता बल्कि कई आइटमों को गिनना चाहता हूं। वेरिएबल match में स्ट्रिंग्स की एक सूची है। मैं लक्ष्य सूची खोजना चाहता हूं कि लक्ष्य सूची में कितने match आइटम हैं।

match = ["Manager", "Access Responsible"]

मेरे शब्दकोश में निम्नलिखित प्रविष्टियाँ हैं:

dict = {'WF:ACAA-CR (auto)': ['Manager', 'Access Responsible', 'Automatic'],
    'WF:ACAA-CR-AccResp (auto)': ['Manager', 'Access Responsible', 'Automatic'], 
    'WF:ACAA-CR-IT-AccResp[AUTO]': ['Group', 'Access Responsible', 'Automatic']}

इस समय मेरा कोड है:

for key, values in dict.items():
    val = values
    match = "Manager"
    c = Counter(val)
    print(key, c[match])

आउटपुट है:

WF:ACAA-CR (auto) 1
WF:ACAA-CR-AccResp (auto) 1
WF:ACAA-CR-IT-AccResp[AUTO] 0

यह ठीक है और मुझे ऐसा कुछ चाहिए, लेकिन अंत में match में छह आइटम के साथ।

मैंने कोशिश की:

for key, values in dict.items():
    val = values
    match = ["Manager", "Access Responsible"]
    c = Counter(val)
    print(key, c[match])

त्रुटि संदेश है:

ट्रेसबैक (सबसे हालिया कॉल अंतिम): फ़ाइल "C: /Users/.PyCharmCE2018.2/config/scraches/extract.py", लाइन 29, प्रिंट में (कुंजी, c [मिलान]) लेखन त्रुटि: unhashable प्रकार: 'सूची'

मैं किसी सूची में एक से अधिक स्ट्रिंग के मिलानों की गणना कैसे करूं?

1
Alex_P 20 पद 2018, 16:33

1 उत्तर

सबसे बढ़िया उत्तर

आप बस अपनी match सूची पर लूप कर सकते हैं और प्रत्येक तत्व की तलाश कर सकते हैं। साथ ही, मैं यह नहीं देखता कि आपको एक अतिरिक्त चर val की आवश्यकता क्यों है।

आपके कोड के साथ समस्या यह थी कि आप एक पूरी सूची match को Counter के आउटपुट के तर्क के रूप में पारित करने का प्रयास कर रहे थे जो एक शब्दकोश है। तो आप अपनी match सूची के दो मानों को कुंजी के रूप में उपयोग करने का प्रयास कर रहे थे। इसलिए आपको त्रुटि मिली।

match = ["Manager", "Access Responsible"]

for key, values in dict_2.items():
    val = values
    c = Counter(val)
    for m in match:
        print(key, c[m])

WF:ACAA-CR (auto) 1
WF:ACAA-CR (auto) 1
WF:ACAA-CR-AccResp (auto) 1
WF:ACAA-CR-AccResp (auto) 1
WF:ACAA-CR-IT-AccResp[AUTO] 0
WF:ACAA-CR-IT-AccResp[AUTO] 1
3
Sheldore 20 पद 2018, 16:51