字典的键可以是整型、字符串、浮点型、甚至元组
更神奇的是,访问字典时键可以是变量呢!!
#直接创建
#字典名={键:值,........}
phonebook = {'Zk' : '510', 'Zps' : '877', 'Jqj' : '177'}
phonebook
phonebook['Zk']
#利用dict函数,将其他映射对应建立字典
item = [('Zk', '510'), ('Zps', '877')]
pbook = dict(item)
pbook
#也可以直接用dict函数的参数创建字典
#此时键只能是字符串,参数里的键不需要加引号!!
ppbook = dict(Zk = '510', Zps = '877')
ppbook
#成员资格(in)查找的是键,而不是值!!
'Zk' in ppbook
'510' in ppbook
#列表不能给任意索引赋值,字典可以!
#列表不能直接赋值来追加元素,字典可以!
a = []
a[42] = 'a'
b = {}
b[42] = 'b'
b
此时的键必须是字符串哦!!
ppbook
"Zk's phone number is %(Zk)s." % ppbook
phonebook
phonebook.clear()
phonebook
x={}和x.clear()可是有区别的哦哦哦哦哦!!!
x={}不影响与x关联的字典,但是x.clear()会把相关联的字典都清空了!
x = {'Name': 'Zk'}
y = x
y
x = {}
y
#######################
x = {'Name': 'Zk'}
y = x
y
x.clear()
y
x = {
'username' : 'admin',
'machines' : ['foo', 'bar', 'baz']
}
y = x.copy()
y['username'] = 'zk' #直接替换值
y['machines'].remove('bar') #remove方法是原地操作的
x
y
#可以看到
#y的admin被替换成了zk,x不变
#y的machines少了一个bar,x的bar也不见了咧!!
from copy import deepcopy
x
y = deepcopy(x)
y['machines'].append('bar')
x
y
{}.fromkeys(['name', 'age'])
#也可以不先建立空字典{},而直接在dict类型上操作
dict.fromkeys(['name', 'age'])
#也可以自行指定默认值
dict.fromkeys(['name', 'age'], '(unknown)')
d = {}
d['name']
#哼哼,直接访问可是会出错的哦!
print( d.get('name') )
#同样的,也可以来指定默认值
print( d.get('name', 'N/A') )
pbook
pbook.items()
pbook.iteritems()
pbook
pbook.keys()
pbook.iterkeys()
pbook
pbook.pop('Zk')
pbook
pbook
pbook.setdefault('Zk', 'N/A')
pbook
pbook
n_pbook = {
'Zk' : '510',
'Jqj' :'177'
}
pbook.update(n_pbook)
pbook
#可以看到,Zk的值被改变,Zps的值不变,新增了Jqj
pbook
pbook.values()