天天看點

Python字典dict操作字典dict

字典dict

文法: {鍵1: 值1, 鍵2: 值2, 鍵3: 值3, …, 鍵n: 值n}

不能使用切片

說明:鍵值對: key-value

  • 字典和清單類似,都可以用來存儲多個資料
  • 在清單中查找某個元素時,是根據下标進行的;字典中找某個元素時,是根據**‘名字’—key**(就是冒号:前面的那個值,例如上面代碼中的’name’、‘id’、‘sex’)
  • 字典中的每個元素都由2部分組成,鍵:值。例如 ‘name’:‘班長’ ,'name’為鍵,'班長’為值
  • 鍵可以使用數字、布爾值、元組,字元串等不可變資料類型,但是一般習慣使用字元串,切記不能使用清單等可變資料類型
  • 每個字典裡的key都是唯一的,如果出現了多個相同的key,後面的value會覆寫之前的value

    字典的元素是一個鍵值和value一一對應:key-value

    key的三個特點:

    1.唯一性

    2.是不可變類型,list,dict,set不可用

    3.無序

1.字典定義

d = {"name": "劉亦菲", "age": 33}
# d = {0: 1, 2: 3, (1,): 5}
print(d)

# 定義方法
d = dict(name='鹿晗', age=30)  # {'name': '鹿晗', 'age': 30}
print(d)
# zip()

d = dict(zip(['name', 'age'], ['鄧超', 45]))  # {'name': '鹿晗', 'age': 30}
print(d)

d = dict([('a', 10), ('b', 20), ('c', 30)])
print(d)
           

2.查詢—根據key指查詢

print(d["name"])
# print(d["sex"])  # 不存在的key會報錯

print(d.get('name'))
print(d.get('sex'))  # None,不會報錯
print(d.get('sex', '男'))  # 如果sex存在值則取對應的值,否則取預設值'男'
key = "name"
print(d[key])
           

3.周遊

# 3.周遊
d = {"name": "劉亦菲", "age": 33}
'''
for k in d:  # 擷取的是key
    print(k, d[k])
for k in d.keys():  # 擷取的是key
    print(k, d[k])
'''
'''
for v in d.values():  # 擷取value的值
    print(v)
'''
for k, v in d.items():   # 擷取key和value的值
    print(k, v)

print(list(d.keys()))  # ['name', 'age']
print(list(d.values()))  # ['劉亦菲', 33]
print(list(d.items()))  # [('name', '劉亦菲'), ('age', 33)]
           

4.判斷成員

# 成員
print('age' in d)  # 判斷keys是在字典中存在
print('age'not in d)
           

5.添加與修改

# 增加
d = {'name': '黴黴', 'age': 33}
d['sex'] = '女'  # 如何沒有這個key會在末尾添加
print(d)

# 改
d['sex'] = 'girl'
print(d)
           

6.删除

# d.pop('age')
# d.clear()  # 清空字典
# d.popitem()  # 預設删除最後一個
# print(d)
print()
           

7.将字典中的key與value交換位置

# 将字典的key和value交換
dict2 = {'a': 5, 'b:': 4, 6: 1}
print(dict2)
dict3 = {n: k for k, n in dict2.items()}  # 字典生成式
print(dict3)
           

可變類型

字典是屬于可變類型,傳遞的是位址,如果不是使用copy() 函數複制指派,而是用 == 指派,那麼指派的兩個字典是共用一個位址,那麼對一個字典的修改,也會導緻另一個字典的值發生改變

d = {"name": "劉亦菲", "age": 33}
print(d)  # {"name": "劉亦菲", "age": 33}
d2 = d
d2['name'] = '楊幂'
print(d2)  # {'name': '楊幂', 'age': 33}
print(d)  # {'name': '楊幂', 'age': 33}
           

對清單中的字典進行排序

sorted(stu_list, key=lambda n:n['num'])

sorted(stu_list, key=lambda n:n['score'])