[英]Sorting a dictionary by its value, and then its key if values are equal then outputting a list
[英]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)]
您采取的路線取決於combo
和numb
的大小,以及是否也可以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.