J'ai donc une liste de mots comme celle-ci:
['james,1', 'deb,10', 'bad,1']
Ainsi, chaque élément de la liste contient un mot et un nombre, dans lesquels je dois finalement trouver le nombre d'apparitions de ce mot dans un texte séparé, puis ajouter le numéro, mais pour le moment, ce que je ne sais pas, c'est comment je peux adresser les première et deuxième "parties" séparées par des virgules de chaque élément afin que je puisse implémenter plus tard dans mon code pour trouver les apparences des mots. par exemple, comment pourrais-je répondre au mot «étonné»? Si le mot "james" était tout seul dans le deuxième élément, je sais que je peux juste faire wordlist [1] mais comment cela fonctionnerait-il dans ce cas? Dois-je diviser cette liste en une liste imbriquée ou quelque chose? Si c'est le cas, comment?
3 Réponses :
def get_index_of_word(word:str, wordlist:list): for entry in wordlist: splitted_list = entry.split(",") entry_word = splitted_list[0] if word == entry_word: return int(splitted_list[1]) return None
Vous pouvez utiliser dict pour ce genre de processus
a=['alone,1', 'amazed,10', 'bad,1', 'best,10', 'better,10', 'excellent,10', 'excite,10', 'good,7', 'great,7', 'happy,10', 'hard,5', 'hardest,4', 'hate,1', 'like,7', 'love,10', 'loves,10', 'need,1', 'regret,1', 'sad,1', 'sorry,1', 'thank,5', 'tired,1', 'worst,1'] d={} for i in a: d[i.split(',')[0]]=int(i.split(',')[1]) print(d["happy"])
Si vous avez besoin de paires de tuple imbriquées des chaînes:
[1, 10, 1, 10, 10, 10, 10, 7, 7, 10, 5, 4, 1, 7, 10, 10, 1, 1, 1, 1, 5, 1, 1]
Production:
ml = ['alone,1', 'amazed,10', 'bad,1', 'best,10', 'better,10', 'excellent,10', 'excite,10', 'good,7', 'great,7', 'happy,10', 'hard,5', 'hardest,4', 'hate,1', 'like,7', 'love,10', 'loves,10', 'need,1', 'regret,1', 'sad,1', 'sorry,1', 'thank,5', 'tired,1', 'worst,1'] nums = [int(x.split(",")[1]) for x in ml] print(nums)
Encore mieux, obtenez un dictionnaire après le code earilier:
{'alone': 1, 'amazed': 10, 'bad': 1, 'best': 10, 'better': 10, 'excellent': 10, 'excite': 10, 'good': 7, 'great': 7, 'happy': 10, 'hard': 5, 'hardest': 4, 'hate': 1, 'like': 7, 'love': 10, 'loves': 10, 'need': 1, 'regret': 1, 'sad': 1, 'sorry': 1, 'thank': 5, 'tired': 1, 'worst': 1}
Production:
nums = dict(nums) print(nums)
Utilisez une compréhension de liste pour obtenir uniquement la partie entière:
('alone', 1), ('amazed', 10), ('bad', 1), ('best', 10), ('better', 10), ('excellent', 10), ('excite', 10), ('good', 7), ('great', 7), ('happy', 10), ('hard', 5), ('hardest', 4), ('hate', 1), ('like', 7), ('love', 10), ('loves', 10), ('need', 1), ('regret', 1), ('sad', 1), ('sorry', 1), ('thank', 5), ('tired', 1), ('worst', 1)]
Production:
ml = ['alone,1', 'amazed,10', 'bad,1', 'best,10', 'better,10', 'excellent,10', 'excite,10', 'good,7', 'great,7', 'happy,10', 'hard,5', 'hardest,4', 'hate,1', 'like,7', 'love,10', 'loves,10', 'need,1', 'regret,1', 'sad,1', 'sorry,1', 'thank,5', 'tired,1', 'worst,1'] nums = [(x.split(",")[0],int(x.split(",")[1])) for x in ml] print(nums)
Utilisez
split(',')
pour diviser la chaîne en deux parties.Pourquoi avez-vous fait ça comme ça en premier lieu? Pourquoi pas une liste de tuples,
[('alone', 1), ('amazed', 10), ...]
?comment pourrais-je transformer cela en une liste de tuples?
Faites-le dans le code qui crée la liste en premier lieu.