python - 如何标准化python列表中的标签?
问题描述
我正在尝试分析对话并需要一种标准化说话者标签的方法。每个对话都是一个子列表列表,每个子列表包含两个字符串:一个用于说话者的 ID,另一个用于实际话语:
myconvo = [['bob','hello alice'],['alice','hello bob'],['bob','goodbye alice'],['alice','goodbye bob']]
最终,我想得到如下结果,其中扬声器标签已标准化:
myconvo = [['speaker1','hello alice'],['speaker2','hello bob'],['speaker1','goodbye alice'],['speaker2','goodbye bob']]
鉴于每次对话都会有不同的发言者,我对如何进行有点不知所措。
到目前为止,我已经识别出...
# empty list to store speaker labels
speakers = set()
# iterate through convo adding speaker names
for sub in myconvo:
if sub[0] not in speakers:
speakers.add(sub[0])
# convert to list to access index (where position 0 will be the first speaker, position 1 will be second speaker etc.)
speakers = list(speakers)
我不确定下一步该去哪里,或者即使有更短的方法来解决这个问题。
解决方案
myconvo = [['bob','hello alice'],['alice','hello bob'],['bob','goodbye alice'],['alice','goodbye bob']]
speakers = {}
count = 1
# geeting the unique user name and assigning speaker numbers to them
for i in myconvo:
if i[0] not in speakers:
speakers.update({i[0]:'speaker{}'.format(count)})
count+=1
# changing the name with the speaker number
for i in range(len(myconvo)):
name = myconvo[i][0]
myconvo[i][0] = speakers[name]
print(myconvo)
输出
[['speaker1', 'hello alice'], ['speaker2', 'hello bob'], ['speaker1', 'goodbye alice'], ['speaker2', 'goodbye bob']]
推荐阅读
- javascript - 添加到 display:none 元素时未显示 Data-id 属性
- c++ - 廉价的值传递与常量引用传递
- android - 如何将recyclerview添加为另一个recyclerview的子级
- firebase - 有没有办法检索 Firestore 集合中的文档并将它们存储为列表
? - python - 如何在 Python 中注释 `apply` 的类型?
- java - 如何解决 java.lang.RuntimeException:P3D 渲染器不在类路径中。从 Eclipse 运行处理时?
- python - 使用 Simple JWT 时如何将自定义序列化程序添加到 Djoser 令牌字段?
- java - 如何创建 i = 0 的 for 循环
- python - Soup 不会下载 HTML Python 中的所有内容
- python - Python:每个项目匹配问题的字典