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)