在迭代python上存储和更新dict中的值

时间:2018-05-06 14:39:07

标签: python dictionary nlp

在这种情况下,最好的方法是,以dict或更好的选项为每个发言者存储口头文本?我希望将每个语音文本映射到每个发言者,就像尝试一样。但输出并不像我预期的那样。

def speaker_texts(cleanedList):

    dictspeaker = {"Speaker": "", "Group": "", "Text": ""}

    pattern_speaker = r"([A-Z]+[a-z]*)([\s]*)(\([A-Z]*\))"

    for sent in cleanedList:
        speaker = re.findall(pattern_speaker, sent)

        for info in speaker:

            dictspeaker.update({"Speaker":info[0], "Group":info[2], "Text": sent})

输出:

{'Speaker': 'Rische', 'Group': '(KPD)', 'Text': ', Antragsteller: Meine Damen und \nHerren! Anläßlich der Regierungserklärung und \n\n\x0c\n\n30 \n\n(Rische) \nauch in der heutigen Debatte zum Flüchtlings-\nproblem wurden viele Worte über eine sinnvolle, \nden sozialen Belangen entsprechende Verwendung \nöffentlicher Mittel gesprochen. Di e Regierung gab \nin ihrem Programm zu verstehen, daß sie eine ver-\nantwortungsbewußte  Sozialpolitik  durchzuführen \ngedenke. Sie hat die Flüchtlingshilfe, den Woh-\nnungsbau, die Verbe.'}

在文件中,扬声器多次出现。我想将口头文本分配给相应的发言者。也就是说,每当发言者出现时,在字典中更新它,以便添加新文本而不覆盖旧文本。

或者我应该为每个演讲者创建一个自己的词典?

2 个答案:

答案 0 :(得分:4)

您可能希望使用namedtuple并创建扬声器对象。然后将它们附加到列表中。在这里,我写了一些代码,向您展示如何使用nametuple。

In [1]: from collections import namedtuple

In [2]: speaker = namedtuple('Speaker', 'speaker goroup text')

In [3]: speaker1 = speaker('Rische', 'KPD', "Antragsteller: Meine 
Damen")

In [4]: speaker1
Out[4]: Speaker(speaker='Rische', goroup='KPD', text='Antragsteller: 
Meine Damen')

In [5]: speaker1.text
Out[5]: 'Antragsteller: Meine Damen'

答案 1 :(得分:0)

在nametuple中,您只需定义您的字段名称(发言者,组,文本)。这些字段可以是字典。

git config --global --unset-all user.name