python观察日志(part1)--字典反向查找
生活随笔
收集整理的這篇文章主要介紹了
python观察日志(part1)--字典反向查找
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記,有錯必糾
反向查找
給定一個字典d,找到鍵k對應的值v=d[k]非常容易,但是如果我們有值v,而想到鍵k該咋整呢?
因為可能存在多個鍵k映射到同一個值v上,所以,我們可以挑選其中一個鍵k作為返回值,或者建立一個列表保存所有的鍵k。
python實現:
def reverse_lookup(d, v):for k in d:if d[k] == v:return kraise LookupError()d = {'a':1, 'c':2, 'e':2, 'f':1, 't':1}print(reverse_lookup(d, 2))輸出:
c反轉字典
構造一個反轉字典函數,將目標字典中具有相同值的鍵放在一個列表中,并將其作為新字典的值,新字典的鍵就是目標字典的值。
python實現:
def invert_dict(d):inverse = dict()for key in d:val = d[key]if val not in inverse:inverse[val] = [key]else:inverse[val].append(key)return inversed = {'a':1, 'c':2, 'e':2, 'f':1, 't':1}print(invert_dict(d))輸出:
{1: ['a', 'f', 't'], 2: ['c', 'e']}散列表
我們在之前的BLOG里學過,字典是通過散列表的方式實現的,這意味著鍵必須是可散列的。
散列是一個函數,接受(任意類型)的值并返回一個整數,字典使用這些被稱為散列值的整數來保存和查找鍵值對。
這套系統當鍵不可變時,可以正常工作。但是,如果鍵像列表那樣,是可變的話,則會有不好的事情發生。例如,新建一個鍵值對時,Python將鍵進行散列并存儲到對應的地方,如果修改了作為鍵的列表,并再次散列,它會指向一個不同的地方。在那種情況下,會導致同一個鍵有兩個條目,或者可能找不到某個鍵。最終結果,都是導致字典無法正常工作。
因此鍵必須是可散列的,而類似列表這樣的可變類型是不可散列的。同樣,因為字典是可變的,它也不能用作鍵,但可以用作字典的值。
總結
以上是生活随笔為你收集整理的python观察日志(part1)--字典反向查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Psych101(part3)--Day
- 下一篇: python观察日志(part6)--不