Как составить список списков с помощью l oop в Python? - PullRequest
0 голосов
/ 03 апреля 2020

Вот как выглядит мой текущий список:

wordOccur = ['tears', 1, 'go', 1, 'i', 4, 'you', 7, 'love', 2, 'when', 3]

Вот как я его создал:

    wordOccur = []

    for x in keywords:

            count = words.count(x)

            wordOccur.append(x)

            wordOccur.append(count)

термин слова относится к списку строк. Каждая строка - это отдельное слово из стихотворения

Как мне сделать wordOccur = [['tears', 1], ['go', 1],[ 'i', 4],[ 'you', 7],[ 'love', 2],[ 'when', 3]]?

Ответы [ 5 ]

1 голос
/ 03 апреля 2020

Вы можете использовать простое понимание списка:

words = 'i love you. when you cry tears i cry. when i love you. you, you, you! when i go to you.'
keywords = ['tears', 'go', 'i', 'you', 'love', 'when']

wordOccur = [[w, words.count(w)] for w in keywords]

Вывод:

[['tears', 1], ['go', 1], ['i', 4], ['you', 7], ['love', 2], ['when', 3]]

Возможно, вы найдете словарь более полезным:

wordOccur = { w : words.count(w) for w in keywords }

Вывод :

{'i': 4, 'tears': 1, 'go': 1, 'love': 2, 'when': 3, 'you': 7}
0 голосов
/ 03 апреля 2020

Я рекомендую вам использовать словарь для этого. Но если вы захотите использовать массивы, которые также отлично подойдут, просто немного усложните работу с вашим кодом.

попробуйте что-то вроде этого:

words = 'i love you. when you cry tears i cry. when i love you. you, you, you! when i go to you.'

keywords = ['tears', 'go', 'i', 'you', 'love', 'when']
wordOccur = []

for w in keywords:
    if w in words:
        wordOccur += [[w, words.count(w)]]

ваш вывод будет выглядеть так что вы ищете

>>> wordOccur
[['tears', 1], ['go', 1], ['i', 4], ['you', 7], ['love', 2], ['when', 3]]
0 голосов
/ 03 апреля 2020

Вы можете изменить этот код.

wordOccur = []

for x in keywords:
  count = words.count(x)
  wordOccur.append(x)
  wordOccur.append(count)

В этот код.

wordOccur = [[word, keywords.count(word)] for word in keywords]
0 голосов
/ 03 апреля 2020

это результат от вашего заданного ввода до желаемого результата

wordOccur = ['tears', 1, 'go', 1, 'i', 4, 'you', 7, 'love', 2, 'when', 3]

result = []

for index in range(0, len(wordOccur),2):
    tmp = [wordOccur[index], wordOccur[index+1]]
    result.append(tmp)

print(result) # [['tears', 1], ['go', 1], ['i', 4], ['you', 7], ['love', 2], ['when', 3]]


# or 

result2 = [ [a,b] for a,b in zip(wordOccur[0::2], wordOccur[1::2])]
print(result2) # [['tears', 1], ['go', 1], ['i', 4], ['you', 7], ['love', 2], ['when', 3]]

Допустим, ваши ключевые слова содержат все ключевые слова, выпущенные к стихотворению, и не имеют частоты на них, поэтому в этом случае вы можете использовать counter

 keywords = [] # your word list
 from collections import Counter

 result_freq = Counter(keywords)

 result_list_of_list = [[k,v] for k,v in result_freq.items()]
0 голосов
/ 03 апреля 2020

Вы фактически добавляете элемент, а не список. Использование счетчика

from collections import Counter
d = Counter(keywords)
[[word,d.get(word,0)] for word in set(keywords)] # use set here to remove the duplicates but will not conserve the order

Ниже приведено решение, которое может go после вашего кода, предполагая wordOccur = ['tears', 1, 'go', 1, 'i', 4, 'you', 7, 'love', 2, 'when', 3]

random_iterator = iter(wordOccur)
[[next(random_iterator),next(random_iterator)] for i in range(len(wordOccur)//2)]

ВЫХОД

[['tears', 1], ['go', 1], ['i', 4], ['you', 7], ['love', 2], ['when', 3]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...