1 8字典的運算

2022-09-22 03:21:08 字數 1966 閱讀 3157

問題

​ 怎樣在資料字典中執行一些計算操作(比如求最小值、最大值、排序等等)?

解決方案

​ 考慮下面的骨片名稱和**對映字典:

prices=
​ 為了對字典執行計算操作,通常需要使用zip()函式先將鍵和值反轉過來,比如,下面是查詢在最小和最大**值的**:

print(min(zip(prices.values(),prices.keys())))   #(10.75, 'fb')

print(max(zip(prices.values(),prices.keys()))) #(612.78, 'aapl')

類似的,可以使用zip()和sorted()函式排列字典資料:

print(sorted(zip(prices.values(),prices.keys())))

# [(10.75, 'fb'), (37.2, 'hpq'), (45.23, 'acme'), (205.55, 'ibm'), (612.78, 'aapl')]

​ 執行這些計算的時候,需要注意的是zip()函式建立的是乙個只能訪問一次的迭代器。比如,下面的**就會產生錯誤:

prices_and_names=zip(prices.values(),prices.keys())

print(min(prices_and_names))

print(max(prices_and_names)) # valueerror: max() arg is an empty sequence

討論

​ 如果你在乙個字典上執行普通的數字運算,你會發現他們僅僅作用於鍵,而不是值。比如:

print(min(prices))  #  aapl

print(max(prices)) # ibm

這個結果並不是你想要的,因為你想要的在字典的值集合上執行這些計算,或許你會嘗試著使用字典的values()方法來解決這問題:

print(min(prices.values()))  #  10.75

print(max(prices.values())) # 612.78

不幸的是,通常這個結果同樣也不是你想要的。你可能還想要知道對應的額鍵的資訊(比如那種****時最低的?)

​ 你可以在min()和max()函式中提供key函式來獲取最小值或最大值對應的鍵的資訊。比如

print(min(prices,key=lambda k:prices[k]))

print(max(prices,key=lambda k: prices[k]))

​ 但是,如果還像得到最小值,你又得執行一次查詢操作。比如

min_value=prices[min(prices,key=lambda  k:prices[k])]

print(min_value) # 10.75

​ 前面的zip()函式方案通過將字典「反轉」為(值、鍵)元組序列來解決了上述問題。當比較兩個元組的時候,值會先進性比較,然後才是鍵。這樣的話就能通過一條簡單的語句就能輕鬆的實現在字典上的求最值和排序操作了。

​ 需要注意的是在計算操作中使用到了(值,鍵)對,當多個實體擁有相同的值的時候,鍵會決定返回結果。比如,在執行min()和max()操作的時候,如果恰巧最小或最大的值有重複的,那麼有用最小或最大鍵的實體會返回:

print(min(zip(prices.values(),prices.keys())))  #  (10.75, 'fb')

print(max(zip(prices.values(),prices.keys()))) # (612.78, 'aapl')

3 4 字典的巢狀

1 字典的巢狀 1 stu info 3 xiaohei 4 2 巢狀字典的取值 1 stu info 3 xiaohei 4 5 print stu info xiaoming phone 3 巢狀字典的增刪改查 案例 1 d 4 house 北京 南京 上海 5 money 1000000 6 ...

5 1 字典操作

字典操作 第二週 第12章節 python3.5 字典的使用 增刪改查功能,35分鐘,迴圈?字典 目錄 data 朝陽 東直門 海淀 山東 青島 濟南 廣東 常熟 佛山 exit flag false while not exit flag for i in data print i choice ...

28 字典型別

字典型別 dict 屬於鍵值型別,也是python中最常用的鍵值型別 key value 其中鍵 key 必須是唯一的,key必須是不可變型別 後面篇章會講解 value可以是任意型別。字典外面用大括號 進行界定,內部元素是key value組合形式,元素之間用逗號分隔,字典的元素沒有索引,字典的元...