(3)python之 字典dict 详解

1 定义

dict字典内建数据结构中最重要,其中键和值都是python对象;用大括号{}创建字典 如:

empty_dict = {}
d1 = {'a' : 'some value', 'b' : [1, 2, 3, 4]} 定义dict,可放不同类型值
d1
d1[7] = 'an integer' 向字典中插入元素
d1 返回{'a': 'some value', 'b': [1, 2, 3, 4], 7: 'an integer'}
d1['b'] 
'b' in d1 可判断字典中键值是否含有k对应的值

2 删除键或值(del、pop)

d1[5] = 'some value' 插入key:5 和value:'some value'
d1
d1['dummy'] = 'another value' 插入key和value
d1
del d1[5] 指定key删除对应的key和value,无返回值
d1
ret = d1.pop('dummy')  指定key删除对应的key和value,返回被删掉的值
ret 返回 another value
d1

list(d1.keys()) 获取字典的list的key
list(d1.values()) 获取字典的list的values

d1.update({'b' : 'foo', 'c' : 12}) 更新对应的key的值
d1

 

3 从序列生产字典 字典可接受二元组

mapping = {}

for key, value in zip(key_list, value_list):

    mapping[key] = value

mapping = dict(zip(range(5), reversed(range(5))))
mapping

 4 字典默认值

4.1字典的 get(key, default_value) 可设置默认值

get()方法获取dict的数据,它有两个参数:要取得其值的键,及如果该键不存在时,返回的备用值

常见场景1:

if key in some_dict:

  value = some_dict[key]

else:

   value = default_value

可简化成如下:

value = some_dict.get(key, default_value)

4.2字典的setdefault() 可设置默认值

setdefault()方法在dict插入数据。传递给该方法的第一个参数,是要检查的键。第二个参数,是如果该键不存在时要设置的值。如果该键确实存在,方法就会返回键的值

常见场景2:

words = ['apple', 'bat', 'bar', 'atom', 'book']
by_letter = {}
for word in words:
    letter = word[0]
    if letter not in by_letter: #判断字典中的key是否已含有,有的话就添加新的
        by_letter[letter] = [word]
    else:
        by_letter[letter].append(word)#如果key已存在,则追加至value值后
by_letter

 可简化成如下:

by_letter = {}
for word in words:
    letter = word[0]
    by_letter.setdefault(letter, []).append(word)
by_letter

4.3 defaultdict模块

defaultdict属于内建函数dict的一个子类,调用工厂函数提供缺失的值

defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,自行确定赋值,但是values的类型,是function_factory的类实例,而且具有默认值。比如defaultdict(int)则创建一个类似dictionary对象,里面任何的values都是int的实例,而且就算是一个不存在的key, d[key] 也有一个默认值,这个默认值是int类型值0

可简化成如下:

from collections import defaultdict

by_letter = defaultdict(list)

for word in words:

   by_letter[word[0]].append(word)

注意:什么是工厂函数?

所有的内建类型现在也都是类, 在这基础之上, 原来的所谓内建转换函数像int(), type(), list() 等等, 现在都成了工厂函数。 也就是说虽然它们看上去有点象函数, 实质上他们是类。当你调用它们时, 实际上是生成了该类型的一个实例

5 有效的字典键类型

键必须是不可变的对象,如整数、浮点数、字符串或元组等,哈希化,即可用hash函数检验对象是否可作为键

hash('string')
hash((1, 2, (2, 3)))
hash((1, 2, [2, 3])) #报错,因为list可变,不可哈希化
d = {}
d[tuple([1, 2, 3])] = 5 #tuple([1, 2, 3]转化成元组(1,2,3),即可哈希化
d

本篇知识点参考《利用python进行数据分析》,更多知识请阅读原书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值