Python3字典

#!usr/bin/python
# coding=UTF-8
#Python3字典
''''''
'''
python字典
    1、字典是一种可变容器模型,且可存储任意类型对象。
    2、字典中的数据是键值对(key:value),每个键值对用逗号(,)分割,包含在花括号{};
    3、字典中的键必须是唯一的;键必须是不可变的,如字符串,数字,元组等。
    4、字典中的值可以是任何数据类型,可以一样。
'''

dict1 = {'key1': 'aa','key2': 'bb','key3' : 'cc'}
print(dict1['key1'],dict1['key2'],dict1['key3'])    #输出 aa bb cc
#print(dict1['key']) #输出 KeyError: 'key'(如果访问字典中的键不存在,则报错)

#添加字典键值对
dict1['key4'] = 'dd'
print(dict1)    #输出 {'key1': 'aa', 'key2': 'bb', 'key3': 'cc', 'key4': 'dd'}
#修改字典中键对应的值
dict1['key3'] = '333'
print(dict1)    #输出 {'key1': 'aa', 'key2': 'bb', 'key3': '333', 'key4': 'dd'}
#删除字典中的键值对
dict2 = {'key1': 'aa','key2': 'bb'}
print(dict2)    #输出 {'key1': 'aa', 'key2': 'bb'}
del dict2['key1']
print(dict2)    #输出 {'key2': 'bb'}
#删除字典
del dict2   #   del后字典就不存在了。
#print('dict2:',dict2) #输出 NameError: name 'dict2' is not defined
#清空字典
dict2 = {'key1': 'aa','key2': 'bb'}
dict2.clear()
print('dict2:',dict2)   #输出 dict2: {}

#字典中键必须唯一且是不可变数据类型
dict1 = {'key1': 'aa','key2': 'bb', 'key1':'cc'}
print(dict1)    #输出 {'key1': 'cc', 'key2': 'bb'}
#出现两个相同的键,则后一个的值会替换掉前面的值

list1 = ['1','2']
#dict1 = {list1: 'val', 'key1' : 'cc'}
#print(dict1)    #输出 TypeError: unhashable type: 'list'

'''
字典内置函数
    1len(dict)     计算字典元素个数,即键的总数。
    2str(dict)     输出字典,以可打印的字符串表示。
    3type(dict)    返回输入的变量类型,如果变量是字典就返回字典类型。
'''
dict1 = {'k1':'v1','k2':'v2',3: 55}
print(dict1, len(dict1))    #输出 {'k1': 'v1', 'k2': 'v2', 3: 55} 3
print(str(dict1))   #输出 {'k1': 'v1', 'k2': 'v2', 3: 55}
print(type(dict1))  #输出 <class 'dict'>

'''
python字典内置方法
    1dict.clear()  删除字典内所有元素。
    2dict.copy()   返回一个字典的浅复制。
        复制出来的字典与旧字典不是同一个,是从新分配内存地址。
    3dict.formkeys(seq, value)    创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
            seq -- 字典键值列表。
            value -- 可选参数, 设置键序列(seq)对应的值,默认为 None4dict.get(key,default=None)    返回指定键的值。
            key -- 字典中要查找的键。
            default -- 如果指定的键不存在时,返回该默认值。
    5、key in dict   判断键是否存在于字典中,如果键在字典 dict 里返回 true,否则返回 false。
       key not in dict 判断键是否不存在于字典中,如果键不存在字典 dict 里返回 true,否则返回 false。
    6dict.items()  以列表返回可遍历的(,) 元组数组。
    7dict.keys()   返回一个字典中所有键的可迭代对象,可以使用 list() 来转换为列表。
    8dict.setdefault(key, default=None)    如果键不已经存在于字典中,将会添加键并将值设为默认值。
            key -- 查找的键值。
            default -- 键不存在时,设置的默认键值。
    9dict.update(dict2) 把字典参数 dict2 的 key/value(/) 对更新到字典 dict 里。
    10dict.values()    返回一个字典中所有值的可迭代对象,可以使用 list() 来转换为列表。
    11、pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。
                            key值必须给出。 否则,返回default值。
    12、popitem()    随机返回并删除字典中的最后一对键和值。
                     如果字典已经为空,却调用了此方法,就报出KeyError异常。
        返回一个键值对(key,value)形式,按照 LIFO(Last In First Out 后进先出法) 顺序规则,即最末尾的键值对。
'''
#删除字典所有元素
dict1 = {'k1':'v1','k2':'v2',3: 55}
print(dict1)    #输出 {'k1': 'v1', 'k2': 'v2', 3: 55}
dict1.clear()
print(dict1)    #输出 {}

dict1 = {'k1':'v1','k2':'v2'}
dict2 = dict1.copy()    #复制一个字典
dict3 = dict1           #直接赋值
print(id(dict1), dict1) #输出 2371062998336 {'k1': 'v1', 'k2': 'v2'}
print(id(dict2), dict2) #输出 2371063072960 {'k1': 'v1', 'k2': 'v2'}
print(id(dict3), dict3) #输出 2371062998336 {'k1': 'v1', 'k2': 'v2'}

dict1['k1'] = '111'
print(dict1)    #输出 {'k1': '111', 'k2': 'v2'}
print(dict2)    #输出 {'k1': 'v1', 'k2': 'v2'}
print(dict3)    #输出 {'k1': '111', 'k2': 'v2'}

#直接赋值 id值都一样,说明指向的内存地址都是同一个,是同一个字典。
#copy复制,id值不一样,说明指向的内存地址不一样,也就不是同一个字典。

seq = {'k1','k2','k3'}
dict1 = dict.fromkeys(seq, 5)
print(dict1)    #输出 {'k2': 5, 'k1': 5, 'k3': 5}
dict2 = dict.fromkeys(seq)
print(dict2)    #输出 {'k1': None, 'k3': None, 'k2': None}

dict1 = {'k1':'v1','k2':'v2'}
print(dict1.get('k1'))      #输出 v1
print(dict1.get('k3','gg')) #输出 gg

dict1 = {'k1':'v1','k2':'v2'}
if 'k1' in dict1:           #输出 k1存在于dict1中
    print('k1存在于dict1中')
else:
    print('k1不存在于dict1中')

if 'k3' not in dict1:       #输出 k3不存在于dict1中
    print('k3不存在于dict1中')
else:
    print('k3存在于dict1中')

dict1 = {'k1':'v1','k2':'v2'}
print(dict1.items())    #输出 dict_items([('k1', 'v1'), ('k2', 'v2')])

dict1 = {'k1':'v1','k2':'v2'}
print(dict1.keys())     #输出 dict_keys(['k1', 'k2'])
print(list(dict1.keys()))   #输出 ['k1', 'k2']

dict1 = {'k1':'v1','k2':'v2'}
dict1.setdefault('k3')
print(dict1)    #输出 {'k1': 'v1', 'k2': 'v2', 'k3': None}
dict1.setdefault('k4', '66')
print(dict1)    #输出 {'k1': 'v1', 'k2': 'v2', 'k3': None, 'k4': '66'}

dict1 = {'k1':'v1','k2':'v2'}
dict2 = {'k3':'v3','k2':'v5'}
dict1.update(dict2)
print(dict1,dict2)  #输出 {'k1': 'v1', 'k2': 'v5', 'k3': 'v3'} {'k3': 'v3', 'k2': 'v5'}

dict1 = {'k1':'v1','k2':'v2'}
print(dict1.values(),list(dict1.values()))  #输出 dict_values(['v1', 'v2']) ['v1', 'v2']

dict1 = {'k1':'v1','k2':'v2'}
print(dict1.pop('k1'),dict1)  #输出 v1 {'k2': 'v2'}

dict1 = {'k1':'v1','k2':'v2'}
#print(dict1.pop('k3'))  #输出 KeyError: 'k3'

dict1 = {'k1':'v1','k2':'v2'}
print(dict1.pop('k3', '33'),dict1)  #输出 33 {'k1': 'v1', 'k2': 'v2'}

dict1 = {'k1':'v1','k2':'v2', 'k3':'v3'}
print(dict1.popitem(),dict1)    #输出 ('k3', 'v3') {'k1': 'v1', 'k2': 'v2'}
print(dict1.popitem(),dict1)    #输出 ('k2', 'v2') {'k1': 'v1'}
print(dict1.popitem(),dict1)    #输出 ('k1', 'v1') {}
print(dict1.popitem())    #输出 KeyError: 'popitem(): dictionary is empty'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风之梦丽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值