python字典基本操作總結

經常用python,體會就是會用的就經常用,總是那麼幾個方法。其實很多方法有時候更方便,更直接可以達到目的,只是自己不清楚它的真實用法罷了。總是需要看看書,總結一下,纔會有提高。
現將python字典的基本操作和方法總結如下,直接上代碼親測:

# -*- coding: utf-8 -*-
"""
Created on Thu Feb 23 20:45:43 2017

@author: daliang
"""
print "#################### 字典創建 #################################"
print "# 直接創建字典"
phoneBook = {'liang':'S201402034','gou':'S201402031','yang':'S201402033'}
print phoneBook
print "# 利用dict函數通過其他映射或者鍵值對創建字典"
items = [('name','gou'),('age','27')]
d1 = dict(items)
print d1

items2 = [['name','daliang'],['age','26']]
d2= dict(items)
print d2

d3 = dict(name='daliang',age='26')
print d3

print "#################### 字典基本操作 #############################"

print "# 字典的鍵可以是任何不可變類型,比如整型,浮點型,字符串,元組 "
dictName = {'liang':'S201402034','gou':'S201402031','yang':'S201402033'}

print len(dictName)
print dictName['liang']

dictName['liang'] = 'modify it'
print dictName['liang']

del dictName['liang']
print dictName

if 'liang' in dictName:
    print dictName['liang']
else:
    print "not this key"

print "###################### 字典方法 ##########################"

print "# clear清除所有項"
dictName = {'liang':'S201402034','gou':'S201402031','yang':'S201402033'}
print dictName
dictName.clear()
print dictName

print "# copy 返回相同鍵值對的新字典,淺複製:新字典中的元素是老字典的引用"
print "# deepcopy 返回相同鍵值對的新字典,深複製:字典中的元素是新的對象,它不是成員方法,只是函數"
dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}
from copy import deepcopy
deepCopiedDict = deepcopy(dictName)
shallowCopiedDict = dictName.copy()

print shallowCopiedDict
print deepCopiedDict
shallowCopiedDict['yang'].remove('S201402034')
print shallowCopiedDict
print deepCopiedDict
print dictName

print "# fromkeys 使用指定的鍵建立新的字典,每一個鍵的默認值爲none,也可以指定默認值"
dictName = {}.fromkeys(['name','age','gender'])
print dictName
dictName = {}.fromkeys(['name','age','gender'],'undefined')
print dictName

print "# get 通過鍵訪問字典中的值,鍵不存在時,不會出錯"
dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}
print dictName.get('liang')
print dictName.get('niu')
print dictName.get('niu','key not exist!')

print "# has_key 相當於  k in dict"
dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}
print dictName.has_key('liang')
print dictName.has_key('niu')

print "# items 以列表額形式返回字典,每一項都是鍵值對的形式的列表"
print "# iteritems 功能大致相同,返回迭代器對象,而不是列表"
dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}
print dictName.items()
print dictName.iteritems().next()
print list(dictName.iteritems())

print "#keys 以列表的形式返回鍵"
print "#iterkeys 返回鍵的迭代器對象"
dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}
print dictName.keys()
print dictName.iterkeys().next()
print list(dictName.iterkeys())

print "#value 以列表的形式返回值"
print "#itervalues 返回值的迭代器對象"
dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}
print dictName.values()
print dictName.itervalues().next()
print list(dictName.itervalues())

print "# pop 獲取給定鍵的值,然後將鍵值對刪除"
print "# popitem 彈出一個隨機鍵值對,並刪除"
dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}
print dictName.pop('liang')
print dictName.popitem()
print dictName

print "# setdefault 類似於get,獲得給定鍵的值,如果不含有指定鍵,還可以設定鍵值"
dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}
print dictName.setdefault('liang','return or set')
print dictName.setdefault('niu','return or set')
print dictName

print "# update 利用一個字典更新另一個字典,沒有的鍵值對會被添加,已存在的鍵的值會被覆蓋"
dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}
newDict = {'niu':'S201402039','yang':'S201402038'}
print dictName.update(newDict)
print dictName

運行結果:

#################### 字典創建 #################################
# 直接創建字典
{'gou': 'S201402031', 'yang': 'S201402033', 'liang': 'S201402034'}
# 利用dict函數通過其他映射或者鍵值對創建字典
{'age': '27', 'name': 'gou'}
{'age': '27', 'name': 'gou'}
{'age': '26', 'name': 'daliang'}
#################### 字典基本操作 #############################
# 字典的鍵可以是任何不可變類型,比如整型,浮點型,字符串,元組 
3
S201402034
modify it
{'gou': 'S201402031', 'yang': 'S201402033'}
not this key
###################### 字典方法 ##########################
# clear清除所有項
{'gou': 'S201402031', 'yang': 'S201402033', 'liang': 'S201402034'}
{}
# copy 返回相同鍵值對的新字典,淺複製:新字典中的元素是老字典的引用
# deepcopy 返回相同鍵值對的新字典,深複製:字典中的元素是新的對象,它不是成員方法,只是函數
{'gou': 'S201402031', 'yang': ['S201402033', 'S201402034'], 'liang': 'S201402034'}
{'gou': 'S201402031', 'yang': ['S201402033', 'S201402034'], 'liang': 'S201402034'}
{'gou': 'S201402031', 'yang': ['S201402033'], 'liang': 'S201402034'}
{'gou': 'S201402031', 'yang': ['S201402033', 'S201402034'], 'liang': 'S201402034'}
{'gou': 'S201402031', 'yang': ['S201402033'], 'liang': 'S201402034'}
# fromkeys 使用指定的鍵建立新的字典,每一個鍵的默認值爲none,也可以指定默認值
{'gender': None, 'age': None, 'name': None}
{'gender': 'undefined', 'age': 'undefined', 'name': 'undefined'}
# get 通過鍵訪問字典中的值,鍵不存在時,不會出錯
S201402034
None
key not exist!
# has_key 相當於  k in dict
True
False
# items 以列表額形式返回字典,每一項都是鍵值對的形式的列表
# iteritems 功能大致相同,返回迭代器對象,而不是列表
[('gou', 'S201402031'), ('yang', ['S201402033', 'S201402034']), ('liang', 'S201402034')]
('gou', 'S201402031')
[('gou', 'S201402031'), ('yang', ['S201402033', 'S201402034']), ('liang', 'S201402034')]
#keys 以列表的形式返回鍵
#iterkeys 返回鍵的迭代器對象
['gou', 'yang', 'liang']
gou
['gou', 'yang', 'liang']
#value 以列表的形式返回值
#itervalues 返回值的迭代器對象
['S201402031', ['S201402033', 'S201402034'], 'S201402034']
S201402031
['S201402031', ['S201402033', 'S201402034'], 'S201402034']
# pop 獲取給定鍵的值,然後將鍵值對刪除
# popitem 彈出一個隨機鍵值對,並刪除
S201402034
('gou', 'S201402031')
{'yang': ['S201402033', 'S201402034']}
# setdefault 類似於get,獲得給定鍵的值,如果不含有指定鍵,還可以設定鍵值
S201402034
return or set
{'gou': 'S201402031', 'yang': ['S201402033', 'S201402034'], 'liang': 'S201402034', 'niu': 'return or set'}
# update 利用一個字典更新另一個字典,沒有的鍵值對會被添加,已存在的鍵的值會被覆蓋
None
{'gou': 'S201402031', 'yang': 'S201402038', 'liang': 'S201402034', 'niu': 'S201402039'}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章