Python. 怎么做一个小列表来从大列表中取出块?

2024-04-19 19:52:41 发布

您现在位置:Python中文网/ 问答频道 /正文

for word in list6:
    if word = "TRUMP":

所以,我有一份辩论笔录里每个单词的清单。特朗普讲话时,以“特朗普”开头。我要把他的话写进一个单独的单子里。如果列表6中的单词是“特朗普”,那么我需要把所有的东西都放到一个列表中,直到它说出另一个人的名字。他说了不止一次。你知道吗

我只是需要帮助完成这个循环。你知道吗


Tags: in列表forif名字单词word单子
1条回答
网友
1楼 · 发布于 2024-04-19 19:52:41
list6 = ['TRUMP','I','am','good', 'HILLARY','I','am','good','too','TRUMP','But','How?']
person_words = {'TRUMP':[], 'HILLARY':[]}

person_names = person_words.keys()

one_person_onetime_words = []

for word in list6:
    if word in person_names:
        if len(one_person_onetime_words):
            person_words[this_person].append(one_person_onetime_words)
            one_person_onetime_words = []
        this_person = word
    else:
        one_person_onetime_words.append(word)

person_words[this_person].append(one_person_onetime_words)

print person_words

给予

{'HILLARY': [['I', 'am', 'good', 'too']], 'TRUMP': [['I', 'am', 'good'], ['But', 'How?']]}

所以,在一个镜头里,所有人的谈话都是不同的。你知道吗

正如你在问题的评论中提到的,如果你只想得到一个人的话,你可以使用以下方法:

from copy import copy

list6 = ['TRUMP','I','am','good', 'HILLARY','I','am','good','too','TRUMP','But','How?']
person_words = []
all_persons = ['TRUMP', 'HILLARY']
person_looking_for = 'TRUMP'

filter_out_persons = copy(all_persons)
filter_out_persons.remove(person_looking_for)

person_onetime_words = []

capture_words = False
for word in list6:
    if word == person_looking_for:
        capture_words = True
        if len(person_onetime_words):
            person_words.append(person_onetime_words)
            person_onetime_words = []
    elif word not in filter_out_persons and capture_words:
        person_onetime_words.append(word)
    else:
        capture_words = False

person_words.append(person_onetime_words)
print "{}'s words".format(person_looking_for)
print person_words

这给了

TRUMP's words
[['I', 'am', 'good'], ['But', 'How?']]

下面将给出一个以单词为关键字的字典,值将再次成为一个字典,其中包含每个人对该单词的使用频率。你知道吗

import pprint

list6 = ['TRUMP','I','am','good', 'HILLARY','I','am','good','too','TRUMP','But','How?']

person_names = ['TRUMP','HILLARY']

word_frequency = {}
for word in list6:
    if word in person_names:
        person = word
    else:
        word = word.lower()
        if word in word_frequency:
            if person in word_frequency[word]:
                word_frequency[word][person] += 1
            else:
                word_frequency[word][person] = 1
        else:
            word_frequency[word] = {person: 1}

pprint.pprint(word_frequency)

给予

{'am': {'HILLARY': 1, 'TRUMP': 1},
 'but': {'TRUMP': 1},
 'good': {'HILLARY': 1, 'TRUMP': 1},
 'how?': {'TRUMP': 1},
 'i': {'HILLARY': 1, 'TRUMP': 1},
 'too': {'HILLARY': 1}}

相关问题 更多 >