字典dictionary是内置的数据类型,是个无序的存储结构,每一元素是key-value对
不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住.键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
字典支持无限极嵌套
- fromkeys()用于创建字典
- dict()创建字典
- 字典名[要改变或添加的key]=要改的或加的value
- id():查地址
- del :删除元素 eg:del dict8[‘key’],删除了整个元素,连dict8这个变量都完全不存在
- clear:也是清空,不过是把里面的内容清空,而变成了一个空的变量
>>> dict4=dict((('小',18),('da',12)))
>>> dict4
{'小': 18, 'da': 12}
>>> dict4['xiaomao']=12
>>> dict4 #增加一个值
{'小': 18, 'da': 12, 'xiaomao': 12}
>>> dict4['da']=13
>>> dict4 #改变相应key对应的value
{'小': 18, 'da': 13, 'xiaomao': 12}
>>> dict1={}
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict1.fromkeys((1,2,3),('one'))
{1: 'one', 2: 'one', 3: 'one'}
>>> dict1.fromkeys((2,4),('one','two'))
{2: ('one', 'two'), 4: ('one', 'two')}
>>> dict1 = dict1.fromkeys(range(32),'赞')
>>> dict1 #range(a,n)是将a到n-1的数全部输出
{0: '赞', 1: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞', 8: '赞', 9: '赞', 10: '赞', 11: '赞', 12: '赞', 13: '赞', 14: '赞', 15: '赞', 16: ' 赞', 17: '赞', 18: '赞', 19: '赞', 20: '赞', 21: '赞', 22: '赞', 23: '赞', 24: '赞', 25: '赞', 26: '赞', 27: '赞', 28: '赞', 29: '赞', 30: '赞', 31: '赞'}
三种方法:keys(),values(),items(),分别求对应的值
get()方法:求某个值,如果在字典中则结果是该值。如果没有得到null,但是如果之前get(3,‘没有’)则如果没有3在字典里面则会打印‘没有’
但如果是不用get方法直接访问不存在的key,程序会报错,所有用get方法更安全
找到了就返回本来应该返回的值
dict1 = {'清华':985,'北大':985,'南昌':211}
print(dict1.get('浙大')) #会返回None
print(dict1['浙大'])#会报错
print(dict1.get('浙大','do not find'))#会返回do not find
#没有找到的时候可以返回默认值
也可以直接用成员资格操作符in,not in
>>> dict8=dict.fromkeys(range(3),'加油!')
>>> dict8 #fromkeys()用于创建字典
{0: '加油!', 1: '加油!', 2: '加油!'}
三种方法:keys(),values(),items()
>>> for each in dict8.keys():
print(each)
0
1
2
>>> for i in dict8.values():
print(i)
加油!
加油!
加油!
>>> for i in dict8.items():
print(i)
(0, '加油!')
(1, '加油!')
(2, '加油!')
>>>dict1 = {'清华':985,'北大':985,'南昌':211}
>>>print(dict1.keys)
dict_keys(['清华', '北大', '南昌'])
#将dict1的key全部打印出来
#同理还有print(dict1.values) , print(dict1.items)
#enumerate函数:用这个枚举函数会返回每一个的下标和key
>>>for i,a in enumerate(dict1):
>>>print(i,a)
0 清华
1 北大
2 南昌 #上下的两组差异就是上面一个分开返回
>>>for i in enumerate(dict1):
>>>print(i)
(0, '清华')
(1, '北大')
(2, '南昌')
get()方法
>>> dict8.get(3)
>>> print(dict8.get(3))
None
>>> print(dict8.get(2,'没有'))
加油!
>>> print(dict8.get(5,'没有'))
没有
成员操作符in,not in使用:判断是否在里面
>>> 3 in dict8 #判断3是否在字典dict8中
False
>>> 3 not in dict8
True
>>> 2 in dict8
True
clear()方法:清空
>>> dict1=dict.fromkeys((range(2,6)),'欧克')
>>> dict1
{2: '欧克', 3: '欧克', 4: '欧克', 5: '欧克'}
>>> dict1.clear() #清空字典
>>> dict1
{}
pop():将字典元素抛出,类似于栈中的pop方法
popitem() :随机返回并删除字典中的最后一对键和值。如果字典已经为空,却调用了此方法,就报出KeyError异常。返回一个键值对(key,value)形式,按照 LIFO(Last In First Out 后进先出法) 顺序规则,即最末尾的键值对。
setdefault() :如果键不在字典中,则使用默认值插入键。
如果key在字典中,则返回key的值,否则为默认值。
>>> dict8=dict.fromkeys(range(3),'加油!')
>>> dict8.pop(2)
'加油!'
>>> dict8
{0: '加油!', 1: '加油!'}
>>>dict8.popitem()
(4, '加油!')