首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中使用readline读取文件时提取相同列表的不同索引

如何在python中使用readline读取文件时提取相同列表的不同索引
EN

Stack Overflow用户
提问于 2020-03-25 14:25:55
回答 3查看 47关注 0票数 0
代码语言:javascript
复制
file = open(file = r'moto.txt')
bscAlertLines = file.readlines()            
for alertLine in bscAlertLines:
        if "MAINS_FAIL (1)" in alertLine:
            inxAlert = bscAlertLines.index(alertLine)
            print(inxAlert)
            alertString = alertLine.split()
            print(alertString)

输出如下所示:

代码语言:javascript
复制
86
['EAS', '0', '0', '0', '17', 'FMIC', 'Untagged', '02-15-2020', 'MAINS_FAIL', '(1)']
194
['EAS', '0', '0', '0', '17', 'FMIC', 'Untagged', '03-24-2020', 'MAINS_FAIL', '(1)']
194
['EAS', '0', '0', '0', '17', 'FMIC', 'Untagged', '03-24-2020', 'MAINS_FAIL', '(1)']
243
['EAS', '0', '0', '0', '17', 'FMIC', 'Untagged', '03-22-2020', 'MAINS_FAIL', '(1)']
262
['EAS', '0', '0', '0', '17', 'FMIC', 'Untagged', '02-22-2020', 'MAINS_FAIL', '(1)']
194
['EAS', '0', '0', '0', '17', 'FMIC', 'Untagged', '03-24-2020', 'MAINS_FAIL', '(1)']
194
['EAS', '0', '0', '0', '17', 'FMIC', 'Untagged', '03-24-2020', 'MAINS_FAIL', '(1)']
194
['EAS', '0', '0', '0', '17', 'FMIC', 'Untagged', '03-24-2020', 'MAINS_FAIL', '(1)']

在这种情况下,索引194是重复的(因为列表的内容相似),但在文本文件中,它位于不同的索引,如285,322,400。我如何检索这些。如何检索文件中的原始索引

EN

回答 3

Stack Overflow用户

发布于 2020-03-25 14:44:00

index函数总是返回alertLine出现的第一个索引,而enumerate函数会帮您一个忙:

代码语言:javascript
复制
with open('moto.txt','r') as f:
    for i,line in enumerate(f):
        if "MAINS_FAIL (1)" in line:
            print(i,line.split(),sep='\n')
票数 1
EN

Stack Overflow用户

发布于 2020-03-25 15:35:02

简单地说,index()方法在列表中查找给定的元素并返回其位置。

如果同一元素多次出现,该方法将返回该元素第一次出现的索引。

代码:

代码语言:javascript
复制
file = open(file = r'moto.txt')
index = 0
bscAlertLines = file.readlines()            
for alertLine in bscAlertLines:
    index++
    if "MAINS_FAIL (1)" in alertLine:
        print(index-1)
        alertString = alertLine.split()
        print(alertString)
票数 1
EN

Stack Overflow用户

发布于 2020-03-25 14:45:08

代码语言:javascript
复制
from collections import defaultdict

arr = [
    ["a", 15, "x"],
    ["b", 15, "x"],
    ["a", 15, "x"],
    ["a", 10, "y"],
    ["b", 15, "x"],
    ["b", 15, "y"],
    ["a", 10, "y"]
]

hash_map = defaultdict(list)

for i, list_el in enumerate(arr):
    el = tuple(list_el)
    hash_map[el].append(i)

print(hash_map)

这提供了:

代码语言:javascript
复制
{
  ('a', 15, 'x'): [0, 2], 
  ('b', 15, 'x'): [1, 4], 
  ('a', 10, 'y'): [3, 6], 
  ('b', 15, 'y'): [5]
}

因为列表是可变的,并且不能用作字典中的键,所以我将它们转换为元组,以便能够将其存储在字典中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60843840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档