簡體   English   中英

如何找到包含特定元素的嵌套列表的最后一次出現的索引?

[英]How to find the index of the last occurrence of nested list that contains a specific element?

我需要(最終)在嵌套列表中的特定位置插入一個值,但需要在嵌套列表中最后一次出現特定字符串之后插入它......所以我需要首先找到最后一個的索引發生。 舉個例子可能更有意義(我會概括):

a = 'RPGAccount'

input = [['RPGAccount', 'ddi=0', 'pp=0', 'kol=0', 'sddf=1234567890', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n'], ['RPGAccount', 'ddi=0', 'pp=0', 'kol=0', 'sddf=NA', '4233f2dsfa=abc', 'igg=source', 'id=4g43g34b433435n35n'], ['RPGAdditional', 'addkey=asdf', 'addvalue=false', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf'], ['RPGAdditional', 'addkey=device_id', 'addvalue=F309387C-AAF5-478D-95A2-28E9B46105C7', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf'], ['RPGAdditional', 'addkey=sdaf', 'addvalue=fixed_ap', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf’]]

b = 1

所以我需要返回 1 的索引,因為 1 是列表的索引

['RPGAccount', 'ddi=0', 'pp=0', 'kol=0', 'sddf=NA', '4233f2dsfa=abc', 'igg=source', 'id=4g43g34b433435n35n']

其中包含最后一次出現的字符串“RPGAccount”

我知道我應該做這樣的事情:

for l in input:
    for l_ in l:
        if a in l_:
            print input.index[l]
        else:
            pass

解決方案:

some_list = []
for l in input:
    for l_ in l:
        if a in l_:
            some_list.append(input.index(l))
        else:
            pass
location_ = some_list[-1]
print location_

你可以這樣做:

a = 'RPGAccount'
input = [['RPGAccount', 'ddi=0', 'pp=0', 'kol=0', 'sddf=1234567890', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n'],
         ['RPGAccount', 'ddi=0', 'pp=0', 'kol=0', 'sddf=NA', '4233f2dsfa=abc', 'igg=source', 'id=4g43g34b433435n35n'],
         ['RPGAdditional', 'addkey=asdf', 'addvalue=false', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf'],
         ['RPGAdditional', 'addkey=device_id', 'addvalue=F309387C-AAF5-478D-95A2-28E9B46105C7', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf'],
         ['RPGAdditional', 'addkey=sdaf', 'addvalue=fixed_ap', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf']]
# Index of last sublist containing a - if not found returns -1
b = next((len(input) - i - 1 for i, lst in enumerate(reversed(input)) if a in lst), -1)
print(b)
# 1

使用您的循環,執行以下操作會更有效:

location_ = -1
for i, l in enumerate(input):
    for l_ in l:
        if a in l_:
            location_ = i
print location_
# 1

對不起,錯誤很小,我解決了它......

some_list = []
for l in input:
    for l_ in l:
        if a in l_:
            some_list.append(input.index(l))
        else:
            pass
location_ = some_list[-1]
print location_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM