Python 搜索嵌套列表,查找子元素并基于值删除
我有一个嵌套列表Python 搜索嵌套列表,查找子元素并基于值删除,python,python-3.x,nested-lists,Python,Python 3.x,Nested Lists,我有一个嵌套列表 test_list = [['AA', 'OFF'], ['BB', 'OFF'], ['BB', 'ON'], ['BB', 'ON'], ['CC', 'OFF'], ['DD', 'OFF'], ['EE', 'OFF']] 我想找到匹配的索引0子元素,例如 ['BB', 'OFF'], ['BB', 'ON'], ['BB', 'ON'] 并筛选出索引1中具有'OFF'的任何子项,只要找到了具有'ON'的匹配索引0,并且不保留重复项,否则只保留子元素 因此,对于上述
test_list = [['AA', 'OFF'], ['BB', 'OFF'], ['BB', 'ON'], ['BB', 'ON'], ['CC', 'OFF'], ['DD', 'OFF'], ['EE', 'OFF']]
我想找到匹配的索引0子元素,例如
['BB', 'OFF'], ['BB', 'ON'], ['BB', 'ON']
并筛选出索引1中具有'OFF'
的任何子项,只要找到了具有'ON'
的匹配索引0,并且不保留重复项,否则只保留子元素
因此,对于上述示例,最终结果将是:
[['AA', 'OFF'], ['BB', 'ON'], ['CC', 'OFF'], ['DD', 'OFF'], ['EE', 'OFF']]
我尝试将上述内容转换为字典,但结果会根据列表的时间顺序而变化:
test_dict = dict(test_list)
test_dict
输出:
{'AA': 'OFF', 'BB': 'ON', 'CC': 'OFF', 'DD': 'OFF', 'EE': 'OFF'}
这正是我想要的
要不是
test_list1 = [['AA', 'OFF'],['BB', 'ON'],['BB', 'OFF'],['CC', 'OFF'],['DD', 'OFF'],['EE', 'OFF']]
test_dict1 = dict(test_list1)
test_dict1
{'AA': 'OFF', 'BB': 'OFF', 'CC': 'OFF', 'DD': 'OFF', 'EE': 'OFF'}
它忽略了['BB','ON']
,因为它的位置不符合我的要求
只要最终值是唯一的并且满足上述“开”/“关”标准,测试表的顺序实际上并不重要。
我想我正在寻找一种对嵌套列表进行分组和排序的方法,这样我就可以将其转换为字典并输出所需的结果?您只需在子列表的第二个元素上对列表进行排序,这样
on
始终跟随OFF
和代码:
test_list1 = [['AA', 'OFF'],['BB', 'ON'],['BB', 'OFF'],['CC', 'OFF'],['DD', 'OFF'],['EE', 'OFF']]
test_dict1 = dict(sorted(test_list1, key=lambda x: x[1]))
测试结果包括:
{'AA': 'OFF', 'BB': 'ON', 'CC': 'OFF', 'DD': 'OFF', 'EE': 'OFF'}
当您有两个OFF和一个ON时会发生什么情况,就像这样
['BB'、['BB'、['BB'、['BB'、['BB'、['BB'、'ON']、
,您希望打开
还是关闭
。