Python 如何使用应用条件修剪嵌套列表?

Python 如何使用应用条件修剪嵌套列表?,python,list,dictionary,Python,List,Dictionary,我有一个嵌套列表 list_ = [['a','1'], ['b','2'], ['c','3'], ['a','4'], ['d','5'], ['e','6'], ['a','7'], ['b','8'], ['f','9'], ['g', '10']] 我想通过应用决定我应该删除哪个子列表的条件来修剪列表。例如,我正在寻找一个列表,如 (编辑:像{'b':'2','c':'3',…,'g':'10}这样的字典也可以。我稍后会将其转换为列表。) 我尝试的是给出错误: for i in ra

我有一个嵌套列表

list_ = [['a','1'], ['b','2'], ['c','3'], ['a','4'], ['d','5'], ['e','6'], ['a','7'], ['b','8'], ['f','9'], ['g', '10']]
我想通过应用决定我应该删除哪个子列表的条件来修剪列表。例如,我正在寻找一个列表,如 (编辑:像{'b':'2','c':'3',…,'g':'10}这样的字典也可以。我稍后会将其转换为列表。)

我尝试的是给出错误:

for i in range(len(list_)):
    for j in range(len(list_)):
        if list[i][0] == list[j][0] and i != j:
            string = input("the '{:}' has already a value '{:}'. Do you want to replace it with '{:}'?".format(i[0],i[1],j[1]))
            if string == 'yes':
                del list_[i]
            else:
                del list_[j]

print(list_)
编辑:首先它要求如下:

“a”已具有值“1”是否要将其替换为“4”

(如果是,则删除['a','1',否则删除['a','4'])

假设string是yes

然后它再次询问:“a”已经有了一个值“4”,是否要用“7”替换它

(如果是,则删除['a','4'],否则删除['a','7']

假设string是no

然后它再次询问:“b”已经有一个值“2”,是否要将其替换为“8”

(如果是,则删除['b','2'],如果否,则删除['b','8'])

假设string是no


然后,最终输出将如上图所示。

尝试此操作,根据您的期望调整条件:

import itertools as it

list_ = [['a','1'], ['b','2'], ['c','3'], ['a','4'], ['d','5'], ['e','6'], ['a','7'], ['b','8'], ['f','9'], ['g', '10']]

print(list(it.filterfalse(lambda x: x[1] == '1' or x[1] == '7' or x[1] == '8', list_)))
如果有帮助,请尝试以下方法:

list_ = [['b','2'], ['c','3'], ['a','4'], ['d','5'], ['e','6'], ['f','9'], ['g', '10'],['a','10'],['g','5'],['g','3']]    

keys=set()
s = "yes"
master_dictionary={}
for i in range(len(list_)):
     keys.add(list_[i][0])


for item in sorted(keys):
    temp=[]
    for lst in list_:
        if(lst[0]==item):
            temp.append(lst[1])
    temp.sort(reverse=True)
    master_dictionary[item]=temp
       

for k,v in master_dictionary.items():
    for value in v:
        s = input()
        if(s=='yes'):
            v.remove(value)
        elif(s=='no' and len(v)!=(v.index(value)+1)):
            v.pop(v.index(value)+1) 

通过应用决定
的条件,哪个条件…?问题不清楚!您希望删除任何项目的条件是什么?@SarunDahal它会这样问:“a”已经有一个值“1”,您想用“4”替换它吗?(如果是,则删除['a','1'],否则删除['a','4'])假设字符串为是,则它再次询问:“a”已具有值“4”,是否要将其替换为“7”?(如果是,则删除['a','4'],否则删除['a','7'])假设字符串为否,则它再次询问:“b”已具有值“2”,是否要将其替换为“8”?(如果是,则删除['b','2'],如果不是,则删除['b','8'])假设字符串为否,您能概括一下吗?例如,从文件中读取了一个包含2个元素的大型列表。任何一种循环遍历每个元素的字典技术都可以,因为这种嵌套列表和字典很容易相互转换。最后一个for循环的工作方式有点不同,但我正在尝试管理字典。非常感谢您的时间和努力!
list_ = [['b','2'], ['c','3'], ['a','4'], ['d','5'], ['e','6'], ['f','9'], ['g', '10'],['a','10'],['g','5'],['g','3']]    

keys=set()
s = "yes"
master_dictionary={}
for i in range(len(list_)):
     keys.add(list_[i][0])


for item in sorted(keys):
    temp=[]
    for lst in list_:
        if(lst[0]==item):
            temp.append(lst[1])
    temp.sort(reverse=True)
    master_dictionary[item]=temp
       

for k,v in master_dictionary.items():
    for value in v:
        s = input()
        if(s=='yes'):
            v.remove(value)
        elif(s=='no' and len(v)!=(v.index(value)+1)):
            v.pop(v.index(value)+1)