मेरे पास list1:"management consultancy services better financial health" में कुछ शब्द हैं

user_search="management consultancy services better financial health"
user_split = nltk.word_tokenize(user_search)
user_length=len(user_split)

असाइन करें: प्रबंधन = 1, परामर्श = 2, सेवाएं = 3, बेहतर = 4, वित्तीय = 5, स्वास्थ्य = 6। फिर इसकी तुलना कुछ सूचियों के सेट से करें।

list2: ['us',
 'paleri',
 'home',
 'us',
 'consulting',
 'services',
 'market',
 'research',
 'analysis',
 'project',
 'feasibility',
 'studies',
 'market',
 'strategy',
 'business',
 'plan',
 'model',
 'health',
 'human' etc..]

ताकि कोई भी मिलान हो, यह 1,2 3 आदि के रूप में संबंधित पदों पर प्रतिबिंबित होगा। यदि स्थान बेजोड़ हैं तो पदों को शब्दों पर संख्या 6 से भर दिया जाता है। अपेक्षित आउटपुट उदाहरण:

[1]  7 8 9 10 11 3  12 13 14 15 16 17 18 19 20 21 22 6 23 24

इसका मतलब है स्ट्रिंग 3 और 4, यानी। इस सूची (मिलान) में सेवाएं और स्वास्थ्य है। अन्य संख्याएँ बेजोड़ इंगित करती हैं।user_length=6। तो बेजोड़ पोजीशन 7 से शुरू होगी। पाइथन में ऐसा अपेक्षित परिणाम कैसे प्राप्त करें?

2
9113303 26 अक्टूबर 2018, 14:06

1 उत्तर

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

काउंटर बनाने के लिए आप itertools.count का उपयोग कर सकते हैं और next के माध्यम से पुनरावृति करें:

from itertools import count

user_search = "management consultancy services better financial health"
words = {v: k for k, v in enumerate(user_search.split(), 1)}

# {'better': 4, 'consultancy': 2, 'financial': 5,
#  'health': 6, 'management': 1, 'services': 3}

L = ['us', 'paleri', 'home', 'us', 'consulting', 'services',
     'market', 'research', 'analysis', 'project', 'feasibility',
     'studies', 'market', 'strategy', 'business', 'plan',
     'model', 'health', 'human']

c = count(start=len(words)+1)
res = [next(c) if word not in words else words[word] for word in L]

# [7, 8, 9, 10, 11, 3, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 6, 23]
1
jpp 26 अक्टूबर 2018, 11:30