1
votes

Comment adresser un élément d'une liste séparé par des virgules?

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?


4 commentaires

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.


3 Réponses :


0
votes
  1. Solution à votre problème
  2. 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
    
    1. Ce que vous devez vraiment faire: formater la structure de données en tuple ou dict

0 commentaires

0
votes

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


0 commentaires

1
votes

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)


0 commentaires