您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Python cookbook中字典相關計算問題的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
問題:在字典上對數據執行各式各樣的計算(比如求最小值、最大值、排序)。
解決方案:利用zip()
將字典的鍵-值對“反轉”為值-鍵對序列。
例如:如下字典存放的股票名稱和對應的價格:
>>> prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, 'FB': 10.75 } >>> prices {'HPQ': 37.2, 'IBM': 205.55, 'FB': 10.75, 'ACME': 45.23, 'AAPL': 612.78} >>> min_price = min(zip(prices.values(), prices.keys())) #注意zip(x,y)中參數的順序 >>> max_price = max(zip(prices.values(), prices.keys())) >>> min_price (10.75, 'FB') >>> max_price (612.78, 'AAPL') >>> prices_sorted = sorted(zip(prices.values(), prices.keys())) >>> prices_sorted [(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME'), (205.55, 'IBM'), (612.78, 'AAPL')] >>> min_price2 = min(zip(prices)) #錯誤用法 >>> min_price2 ('AAPL',) >>> max_price2 = max(zip(prices)) #錯誤用法 >>> max_price2 ('IBM',) >>> min_price3 = min(zip(prices.keys(), prices.values())) #zip()參數順序不對,獲取錯誤的值 >>> min_price3 ('AAPL', 612.78) >>> max_price3 = max(zip(prices.keys(), prices.values())) #zip()參數順序不對,獲取錯誤的值 >>> max_price3 ('IBM', 205.55) >>>
進行這些計算時,請注意zip()
創建了一個迭代器,它的內容只能消費一次。例如:
>>> pirces_and_names=zip(prices.values(), prices.keys()) >>> pirces_and_names <zip object at 0x023BDFA8> >>> min(pirces_and_names) (10.75, 'FB') >>> max(pirces_and_names) Traceback (most recent call last): File "<pyshell#25>", line 1, in <module> max(pirces_and_names) ValueError: max() arg is an empty sequence >>>
注意:當涉及(value,key)對的比較時,碰巧有多個條目擁有相同的value值,那么此時key將用來作為判定結果的依據。
>>> prices={'AAA':45.23,'ZZZ':45.23} >>> min(zip(prices.values(), prices.keys())) (45.23, 'AAA') >>> max(zip(prices.values(), prices.keys())) (45.23, 'ZZZ') >>>
關于“Python cookbook中字典相關計算問題的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。