1. 程式人生 > >python資料結構---字典(Dict)

python資料結構---字典(Dict)

基本操作方法:

d = {'age':18, 'name':'liu', 'sex':'male'}
# 1.遍歷字典
for k in d:
    print k      # 結果:age  name  sex
for k in d.keys():
    print k      # 結果:age  name  sex
for k in d.iterkeys():
    print k      # 結果:age  name  sex

for v in d.values():
    print v      # 結果:18  liu  male
for v in d.itervalues():
    print v      # 結果:18  liu  male

for t in d.items():
    print t      # 結果:('age', 18)  ('name', 'liu')  ('sex', 'male')
for t in d.iteritems():
    print t      # 結果:('age', 18)  ('name', 'liu')  ('sex', 'male')
for k, v in d.items():
    print k, v   # 結果:k是鍵,v是值
for k, v in d.iteritems():
    print k, v   # 結果:k是鍵,v是值

print d.keys()        # 結果:['age', 'name', 'sex']
print d.iterkeys()    # 結果:從d的鍵中返回一個可迭代物件
print d.values()      # 結果:[18, 'liu', 'male']
print d.itervalues()  # 結果:從d的值中返回一個可迭代物件
print d.items()       # 結果:[('age', 18), ('name', 'liu'), ('sex', 'male')]
print d.iteritems()   # 結果:<dictionary-itemiterator object at 0x0000000005564C78>



# 2.增加
d = {'age':18, 'name':'liu', 'sex':'male'}
# 1.list['key'] = vaule
d["score"] = 88
print d      # 結果:{'age': 18, 'score': 88, 'name': 'liu', 'sex': 'male'}
d["score"] = 99
print d      # 結果:{'age': 18, 'score': 99, 'name': 'liu', 'sex': 'male'}
# 這種方法是通過字典的kye給字典新增元素,如果字典裡已存在該key的值,則會覆蓋,如果不存在,則會新增。

# 2.setdefault()方法:
a = d.setdefault('age')
print a, d      # 結果:18  {'age': 18, 'name': 'liu', 'sex': 'male'}
a = d.setdefault('height')
print a, d      # 結果:None  {'age': 18, 'height': None, 'name': 'liu', 'sex': 'male'}
a = d.setdefault('height', 175)
print a, d      # 結果:None  {'age': 18, 'height': None, 'name': 'liu', 'sex': 'male'}
a = d.setdefault('score',88)
print a, d      # 結果:88  {'age': 18, 'score': 88, 'name': 'liu', 'sex': 'male'}
# 此方法是對字典進行增添元素,引數為(‘key’,‘value’) value預設為none。
# 如果字典沒有該key的時候,則會正常新增,返回一個值。預設None。
# 如果已經有了該key的時候,那麼將不進行操作(不會覆蓋原來的值)。



# 3.修改
d = {'age':18, 'name':'liu', 'sex':'male'}
# 1.修改值:list['key'] = vaule
d["age"]=25
print d      # 結果:{'age': 25, 'name': 'liu', 'sex': 'male'}
d["score"] = 88
print d      # 結果:{'age': 25, 'score': 88, 'name': 'liu', 'sex': 'male'}
# 如果字典裡已存在該key的值,則會修改,如果不存在,則會重新新增

# 2.修改鍵
d = {'age':18, 'name':'liu', 'sex':'male'}
# 方法1
d["gender"] = d["sex"]
d.pop("sex")
print d      # 結果:{'age': 18, 'name': 'liu', 'gender': 'male'}
# 方法2
d["gender"] = d.pop("sex")
print d      # 結果:{'age': 18, 'name': 'liu', 'gender': 'male'}
# 方法3
d.update(gender= d.pop("sex"))
print d      # 結果:{'age': 18, 'name': 'liu', 'gender': 'male'}

# 3.update({key:value})方法:該方法是用來追加、拓展原字典元素。引數必須為一個字典。
d = {'age':18, 'name':'liu', 'sex':'male'}
d.update({"age":25})
print d      # 結果:{'age': 25, 'name': 'liu', 'sex': 'male'}
d.update({"age":30, "score": 60})
print d      # 結果:{'age': 30, 'score': 60, 'name': 'liu', 'sex': 'male'}
# update()方法沒有返回值。
# D.update(D2)   將字典 D2 合併到D中,如果鍵相同,則此鍵的值取D2的值作為新值。



# 4.查詢
# 1.dic[key]:可以通過key來索引查詢字典的元素,如果查不到,則會報錯
d = {'age':18, 'name':'liu', 'sex':'male'}
print d["age"]      # 結果:18
print d["score"]    # 結果:KeyError: 'score',報錯了

# 2.get(key)方法:
d = {'age':18, 'name':'liu', 'sex':'male'}
print d.get('name')      # 結果:liu             
print d.get('addr')      # 結果:None     
print d.get('addr','河南')      # 結果:河南



# 5.刪除
# 1.pop(key)方法:
d = {'age':18, 'name':'liu', 'sex':'male'}
a = d.pop("sex")
print a, d      # 結果:male  {'age': 18, 'name': 'liu'}
a = d.pop('score')
print a, d      # 結果:KeyError: 'score',報錯了
a = d.pop('score',None)
print a, d      # 結果:None  {'age': 18, 'name': 'liu'}
# 推薦使用第三種。

# 2.popitem()方法:
a = d.popitem() 
print a, d      # 結果:('age', 18)  {'name': 'liu', 'sex': 'male'}
# 隨機刪除 有返回值 元組裡面是刪除鍵值,Python3.6是預設刪除最後一個。

# 3.clear()方法:
d.clear()
print d      # 結果:{}

# 4.del list[key]:
del d['name'] 
print d      # 結果:{'age': 18, 'sex': 'male'}
del d['score'] 
print d      # 結果:KeyError: 'score'
# 刪除指定鍵值對,如果沒有會報錯。
del d
print d      # 結果:直接刪除字典,會報錯。