Python 如何从列表中相应的索引名中筛选列表值?

Python 如何从列表中相应的索引名中筛选列表值?,python,list,filtering,Python,List,Filtering,我有一个看似微不足道的问题,但我看不到最简单的解决办法。我有一份清单: Example_list=[[['MAX_BID', '€9'], ['BID_NUMBER', 10], ['DATE', '2017-01-25 20:10:33 UTC'], ['SHIPPING_COST', '17.90']], [['MAX_BID', '€165'], ['BID_NUMBER', 30], ['DATE', '2017-01-25 20:12:01 UTC'], ['SHIPPING_COS

我有一个看似微不足道的问题,但我看不到最简单的解决办法。我有一份清单:

Example_list=[[['MAX_BID', '€9'], ['BID_NUMBER', 10], ['DATE', '2017-01-25 20:10:33 UTC'], ['SHIPPING_COST', '17.90']], 
[['MAX_BID', '€165'], ['BID_NUMBER', 30], ['DATE', '2017-01-25 20:12:01 UTC'], ['SHIPPING_COST', '16.00']]]
现在我只想在第二个列表中过滤BID_NUMBER的值。显然,以下工作:

>>> print(test[1][1][1])
30
不幸的是,这将不是一个解决方案,因为实际情况中有大小不同的列表,导致所需列表值的位置不同

我也尝试过以下方法,但这似乎不是最简单的解决方案:

for i in test[1]:
    for p in i:
        if "BID_NUMBER" in p:
            print(p[1])
30

有更优雅的解决方案吗

如果每个即时子列表中的所有子列表都是键值对,则可以在将
BID_NUMBER
作为键访问之前,将封闭列表转换为dict:

for d in map(dict, test):
    print(d['BID_NUMBER'])
否则,如果密钥对子列表的深度不一致,则在尝试转换
try
块中的子列表后,可以使用
while
循环继续查找
块中的内部子列表,但
块除外:

for l in test:
    while True:
        try:
            d = dict(l)
            break
        except ValueError:
            l = l[0]
    print(d['BID_NUMBER'])

第一个列表有3个级别,对吗?谢谢你的评论,现在这会导致以下错误:ValueError:dictionary update sequence元素#0的长度为4;2.我要看看。因此,您输入的子列表的深度确实不一致。您应该尝试修复产生此类不良数据的任何内容的逻辑,或者,如果您无权,您可以在我的更新答案中使用其他解决方案。感谢您在解释如何处理不一致的子列表时提供的额外解释!就像一个符咒。在用例示例中有一个括号错误,导致深度不一致。真实的案例数据没有不一致的深度,您的第一个解决方案是有效的。我已经编辑了上面的帖子,现在你原来的解决方案也很有魅力。谢谢