字典 dictionary

字典(dictionary)是一种通过键引用值的数据结构,这种结构称为映射(mapping),也是Python中唯一内建的映射类型

标准格式: dict = {key1:val1,key2:val2,key3:val3}

  1. 字典中的元素必须以项(键值对)的形式出现 (键key : 值value)
  2. 逻辑上讲,键不能重复,但值可以
  3. 键不可变,不可修改;值可变,可以是任何元素
  4. 字典指定值并没有特殊顺序


创建 & 使用字典

dict函数

可以使用dict函数将其他映射(如其他字典)或键值对建立字典

student = [('name','小智'),('number','1001')]
detail = dict(student)
print(detail)
>>>{'name': '小智', 'number': '1001'}
print('学生姓名:',detail['name'])
>>>学生姓名: 小智

或通过dict关键字创建字典

detail = dict(name = '小智',number = '1001')
print(detail)
>>>{'name': '小智', 'number': '1001'}


字典的基本操作

  1. 修改增添 | dict[key]
letter = {'a':1,'b':2,'c':3,'d':4}
letter['a'] = 6
print(letter)
>>>{'a': 6, 'b': 2, 'c': 3, 'd': 4}
>letter['e'] = 5
print(letter)
>>>{'a': 6, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

通过一个类似给键(key)赋值的方式修改字典
当key存在于字典内时:修改对应值;当key不在字典内时,添加新的键并赋值

  1. 删除 | del dict[key]
letter = {'a':1,'b':2,'c':3,'d':4}
del letter['c']
print(letter)
>>>{'a': 1, 'b': 2, 'd': 4}

如果在字典后不添加[key],则直接删除整个字典


  1. 字典键的特性
    不允许同一个键出现两次,如果同一个键被赋值两次,后面的赋值会被记住;
    键不可变,可用数字,字符串或元组充当

  1. len()函数 | len(dict)
    当此函数用于字典时,用于统计整个字典元素的个数(即键的个数


字典格式化字符串

字典的格式化方式是在每个转换说明符(%)后加上圆括号()括起来的键,再跟上其他元素说明;
用这种方式使用字典时,只要给出的键都能在字典中找到,就可以获得任意数量的转换说明符

letter = {'a':1,'b':2,'c':3,'d':4}
print('the letter a is %(a)s , c is &(c)s here' % letter)
>>>the letter a is 1 , c is 3 here

字典与列表的区别

dict可以用在很多需要高速查找的地方,需要牢记:键必须是不可变对象

dict的特点

  1. 查找和插入的速度都极快,不会随key的增加而变慢;
  2. 需要占用大量内存

list的特点

  1. 查找和插入时间随元素增加而增加
  2. 占用空间小


字典的方法

clear()

dict.clear()
用于删除字典内的所有项

letter = {'a':1,'b':2,'c':3,'d':4}
print(letter.clear())
>>>None

copy()

dict.copy()
用于返回一个具有相同键值对的新字典,此方法是浅复制(shallow copy),因为值本身是相同的,而不是副本;


fromkeys()

dict.fromkeys(seq[,value])
用于创建一个新字典,dict代表指定字典;seq代表字典键列表;value(可选参数)代表键对应的值;
此方法中dict为必写项

a = '1234'
print(dict.fromkeys(a,0)) # 生成一个以变量a的值为键集合的字典,并赋值‘0’
>>>{'1': 0, '2': 0, '3': 0, '4': 0} 
a = ['1','2','3','4']
print(dict.fromkeys(a,0))
>>>{'1': 0, '2': 0, '3': 0, '4': 0}
a = [1,2,3,4]
print(dict.fromkeys(a,0))
>>>{1: 0, 2: 0, 3: 0, 4: 0}
a = [1234]
print(dict.fromkeys(a,0))
>>>{1234: 0}

get() & setdefault()

  • dict.get(key,default= None)
    get()方法返回指定键的值,如果键不在字典中,则返回默认值(None),不改变原字典
  • dict.setdefault(key,default=None)
    setdefault()方法与get()类似,也是根据指定键获取对应的值;
    不同的是:如果键不在字典中,就在原字典中创建这个键,并赋值默认值(None)
a = {1:0,2:0,3:0,4:0}
print(a.get(1)) # 寻找键1 对应的值,返回值为默认
>>>0
print(a.get(5)) # 寻找键5 对应的值,返回值为默认
>>>None
print(a.get(5,9)) # 寻找键5 对应的值,并设定返回的默认值为 9
>>>9
print(a) # get()不会改变原字典
>>>{1: 0, 2: 0, 3: 0, 4: 0}
print(a.setdefault(1)) # 寻找键1 对应的值,如果键在字典内,返回对应的值;若键不在字典内,创建键 1,赋值None
>>>0
print(a.setdefault(5)) # 寻找键5 对应的值,如果键在字典内,返回对应的值;若键不在字典内,创建键 5,赋值None
>>>None
print(a) # setdefault()改变原字典,添加了新的项 5:None
>>>{1: 0, 2: 0, 3: 0, 4: 0, 5: None}
print(a.setdefault(5,9)) # 寻找键5 对应的值,如果键在字典内,返回对应的值;若键不在字典内,创建键 5,赋值9
>>>None # 因为之前已经添加了新的项 5:None,所以键5可以被找到,值为None
print(a) # 
>>>{1: 0, 2: 0, 3: 0, 4: 0, 5: None}


update()

dict.update(dict2)
用于把字典dict2的项更新添加到dict里( 类似于列表方法中的 list.extend(esq) )

a = {1:0,2:0,3:0,4:0}
b = {'1':'u','2':'i'}
a.update(b)
print(a)
>>>{1: 0, 2: 0, 3: 0, 4: 0, '1': 'u', '2': 'i'}

keys() & values() & items()

  • dict.keys()
    以列表的形式返回字典dict所有的键
  • dict.values()
    以列表的形式返回字典dict所有的值,与keys()不同的是,返回的列表可以包含重复的元素
  • dict.items()
    以元组数组的形式遍历字典dict所有的项
a = {1:0,2:0,3:0,4:0}
b = {'1':'u','2':'i'}
a.update(b)
print(a.keys())
>>>dict_keys([1, 2, 3, 4, '1', '2'])
print(a.values())
>>>dict_values([0, 0, 0, 0, 'u', 'i'])
print(a.items())
>>>dict_items([(1, 0), (2, 0), (3, 0), (4, 0), ('1', 'u'), ('2', 'i')])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值