簡體   English   中英

當字典的鍵等於列表元素的值時,打印字典的值

[英]Printing the values of a dictionary when its key is equal to the value of a list element

我下面有這段代碼,我想為等於numb[i]組合中的任何combo[keys]打印combo[values] numb[i]

numb = [5, 7, 49, 11, 13]    
combo  = {45 : (-1002,-1023), 49 : (-9999,-2347), 20 : (-1979, -1576), 13 : (-6000,-3450), 110     : (-2139, -8800), 7 : (-6754,-9087) }

請問我該怎么做?

您的意思是循環numb並打印任何鍵(如果存在)?

兩種選擇; 循環:

for key in numb:
    if key in combo:
        print combo[key]

也可以表示為列表理解,以生成列表:

[combo[key] for key in numb if key in combo]

或具有字典視圖

for key in combo.viewkeys() & numb:
    print combo[key]

再次作為列表理解:

[combo[key] for key in combo.viewkeys() & numb]

演示:

>>> numb = [5, 7, 49, 11, 13]    
>>> combo  = {45 : (-1002,-1023), 49 : (-9999,-2347), 20 : (-1979, -1576), 13 : (-6000,-3450), 110     : (-2139, -8800), 7 : (-6754,-9087) }
>>> [combo[key] for key in numb if key in combo]
[(-6754, -9087), (-9999, -2347), (-6000, -3450)]
>>> [combo[key] for key in combo.viewkeys() & numb]
[(-9999, -2347), (-6000, -3450), (-6754, -9087)]

您采取的路線取決於combonumb的大小,以及是否也可以set numb 如果可以設置numb ,則dict.viewkeys()可以通過使用兩者中的較小者來優化交集操作,並且很有可能是較快的選項,尤其是對於較大的數據集。

這可以通過簡單的列表理解來完成:

>>> [v for k, v in combo.items() if k in numb]
[(-6754, -9087), (-6000, -3450), (-9999, -2347)]

我想那是你的意思?

暫無
暫無

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

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