每次元素更改时如何获取新列表(元素是元组列表中每个元组的特定索引)

时间:2019-06-15 04:04:27

标签: python

我有一个这样的列表:['L1045','u0','m0','BIANCA','他们没有!']和这个列表['L1981','u16', “ m1”,“ COLUMBUS”,“我没有给你很多时间。”]从康奈尔电影对话语料库解析,其中索引0是对话行ID,索引2是电影ID,索引3是线路本身。每部电影有很多行,因此许多列表在索引2处具有相同的项目(例如,许多为“ m0”)。但是,它们没有每部电影中的每一行,因此索引0的项目可能会落入某些模式,但其他数字却不存在(例如,对于一个电影,可能会有“ L99”,“ L100”,“ L102”特定电影,但与103-179之间可能会有差距。

基本上,我正在尝试为每部电影中的所有顺序行创建一个单独的字符串列表,每个字符串的索引为3。因此,每部电影的每个单独“场景”都有单独的行列表。

我很难到达那里。我不知道我是否应该创建一个词典,其中每个独特的电影(索引2)都有一个 唯一键,其值包含一个元组列表,每个元组都有行号和行本身。然后进行某种计数,以检查行号等之间是否有间隔)。如果我走这条路,我还要努力弄清楚如何为每部特定的电影做这件事……

任何帮助将不胜感激!

下面是一些我知道不起作用的代码,但显示了一些最初的思考过程:

movie_lines = 'DIRECTORYPATH/movie_lines.txt'
with open(movie_lines, "r", encoding="ISO-8859-1") as fh:
    lines_chunks = [line.split(" +++$+++ ") for line in fh]

number = 0
counter = 'm' + str(number)
new_list = []

for i in range(616):  
    number = 0
    counter = 'm' + str(number)

    for line in lines_chunks:
        if line[2] == counter:
            new_list.append([(line[2], line[0], line[4])])
        number += 1 

1 个答案:

答案 0 :(得分:0)

这是我的方法:

我将使用嵌套字典来存储数据:

"@bit/yaronlevi.rumble-common.analytic-events@1.0.14"

这样,如果您想从特定电影中的特定场景中检索所有行,则只需调用echo "@bit:registry=https://node.bit.dev\n//node.bit.dev/:_authToken=${BIT_TOKEN}" >> ~/.npmrc,返回的就是元组列表。

代码如下:

npm ERR! 404 Not Found: @bit/yaronlevi.rumble-common.analytic-events@1.0.14

data = {'movie_id' : {'scene_id' : tuple(int(line_id), character, actual_line)}}将行ID“ Lxxx”转换为整数,以便以后进行排序。

输出:

  

[(49,'BIANCA','您要换头发吗?\ n'),(51,'BIANCA','您可能想考虑一下\ n'),(165,'BIANCA','无处...嗨,爸爸。\ n'),(179,“ BIANCA”,“现在不要难过。爸爸,但是有这个男孩……我想他可能会问……\ n”) ,...,(1021,'BIANCA','那个女人是一个完整的水果圈吗,或者仅仅是我吗?\ n'),(1045,'BIANCA','他们没有!\ n'),( 1051,'BIANCA','Patrick-is- a。\ n')]

希望这可以为您提供帮助。干杯。