天天看點

Python字典常用方法總結三、字典

三、字典

1、添加鍵值對

a[key] = value

2、删除鍵值對

del a[key]

scores = {'國文':98,'數學':92,'英語':88}
print(scores)
print(list(scores))

empty_dict = {}
dict2 = {(20,30):'good',30:'bad'}
print(dict2)
print(scores['國文'])
scores['實體'] = 99
print(scores)
del scores['國文']
del scores['數學']
print(scores)
           

結果為

{'國文': 98, '數學': 92, '英語': 88}
['國文', '數學', '英語']
{(20, 30): 'good', 30: 'bad'}
98
{'國文': 98, '數學': 92, '英語': 88, '實體': 99}
{'英語': 88, '實體': 99}
           

3、判斷字典中是否有指定的key

使用

in

not in

來判斷,如:

key in dictory

4、擷取key()、value()、所有鍵值對

(1)

dictory.keys()

擷取字典中的所有鍵并傳回dict_keys對象,可以使用

list()

将傳回的對象轉換為清單

(2)

dictory.values()

擷取字典中的所有值并傳回dict_values對象,可以使用

list()

将傳回的對象轉換為清單

(3)

dictory.items()

擷取字典中的所有鍵值對并傳回dict_items對象,可以使用

list()

将傳回的對象轉換為清單

cars = dict([('BMW',5.5),('BENS',6.2),('AUDI',8)])
print(cars)
cars.get('BMW')
cars.update({'BMW':6,'BENS':9})
print(cars)
ims = cars.items()
print(type(ims))
print(list(ims))
print(list(ims)[1])
kys = cars.keys()
print(type(kys))
print(list(kys))
print(list(kys)[1])
vals = cars.values()
print(list(vals)[1])
print(cars)
           

結果為

{'BMW': 5.5, 'BENS': 6.2, 'AUDI': 8}
{'BMW': 6, 'BENS': 9, 'AUDI': 8}
<class 'dict_items'>
[('BMW', 6), ('BENS', 9), ('AUDI', 8)]
('BENS', 9)
<class 'dict_keys'>
['BMW', 'BENS', 'AUDI']
BENS
9
{'BMW': 6, 'BENS': 9, 'AUDI': 8}
           

5、典型例題

【例】力扣第1題兩數之和:給定一個整數數組 nums 和一個目标值 target,請你在該數組中找出和為目标值的那 兩個 整數,并傳回他們的數組下标。你可以假設每種輸入隻會對應一個答案。但是,你不能重複利用這個數組中同樣的元素。

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dic = {}
        for idx,val in enumerate(nums):
            dic[val] = idx
        for i,ele in enumerate(nums):
            if target-ele in dic and i!=dic[target-ele]:
                return [i,dic[target-ele]]
           

【例】力扣第594題最長和諧子序列:和諧數組是指一個數組裡元素的最大值和最小值之間的差别正好是1。現在,給定一個整數數組,你需要在所有可能的子序列中找到最長的和諧子序列的長度。

class Solution:
    def findLHS(self, nums: List[int]) -> int:
        has = {}
        for i in nums:
            if i not in has:
                has[i] = 1
            else:
                has[i]+=1
        res = 0
        for j in nums:
            if j+1 in has:
                res = max(has[j]+has[j+1],res)
        return res