簡體   English   中英

如何從位於列表中的相應索引名稱中過濾列表值?

[英]How to filter list values from corresponding index names located in list?

我有一個微不足道的問題,似乎如此,但我看不到最簡單的解決方案。 我有一個列表列表:

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作為鍵訪問之前將封閉列表轉換為字典:

for d in map(dict, test):
    print(d['BID_NUMBER'])

否則,如果密鑰對的此類子列表的深度不一致,則可以在嘗試轉換try塊中的子列表后,使用while循環繼續查找except塊中的內部子列表:

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

暫無
暫無

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

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