python数据结构总结:字典

本文深入讲解了Python中字典的基本概念、初始化方式、常用操作方法,包括访问、修改和删除等,并介绍了默认字典和有序字典的使用场景。通过实际案例演示了如何利用字典进行数字和字符串的重复统计。

字典

可变的,无序的,key不重复

{key1:value1, key2:value2, key3:value3}
key   可散列的数据类型(str, bytes and 数值类型)     
value  无要求

初始化字典

d = dict()
d = {}
d  = {'a': 10, 'b': 20, 'c': None, 'd':[1, 2, 3]} 
dict(**kwargs)  # 使用name=value初始化一个字典
dict(iterable, **kwargs)    # 使用可迭代对象和name=value对构造字典
    d = dict((('1', a), (2, 'b')))   # 不推荐使用
    d = dict(([1, 'a'], [2, 'b']))   # 不推荐使用
dict(mapping, **kwargs)     # 使用一个字典构建另一个字典

类方法 dict.fromkeys(iterable, value)  处理找不到键的一个选择
    d = dict.fromkeys(range(5))
    d = dict.fromkeys(range(5), 0)

访问字典

dict[key]           不存在,返回KeyError
dict.get(key[, default])            不存在,返回def; 没有def,返回None
dict.setdefault(key[, default])     不存在,添加kv; 没有def, v=None

修改字典

dict[key] = value
dict.update([other]) -> None    使用另一个字典的kv更新字典

删除字典

dict.pop(key[, default])    不存在返回def;没有def,返回KeyError
dict.popitem()      返回任意item,empty dict 返回KeyError异常
dict.clear()

defaultdict 处理找不到键的一个选择

collections.defaultdict([default_factory[, ...]])
    default_factory 缺省是None,它提供一个初始化函数。
    当key不存在时,会调用这个工厂函数来生成key对应的value

dd = defaultdict(function) 
dd['foo']   # key 'foo' 不存在时,dd调用function函数生成‘foo’对应的value
            # 注意调用,即实例化

from collections import defaultdict 
d1 = {}
d2 = defaultdict(list)
for k in 'abced':
    for v in range(5):
    if k not in d1.keys():
        d1[k] = []
        d1[k].append(v)     
print(d1)

for k in 'mnopq':
    for v in range(3):
    d2[k].append(v)     # k不存在, 调用list生成[]; 使用append 添加v
print(d2)

OrderedDict 对顺序有要求时使用

collections.OrderedDict([items])        # 有序字典,顺序指录入顺序
from collections import OrderedDict
import random
d = {'banbana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
print(d)
keys = list(d.keys())
random.shuffle(keys)
print(keys)
od = OrderedDict()
for key in keys:
    od[key] = d[key]
print(od)
print(od.keys())

from colletions import OrderedDict
od = OrderedDict()
od[1] = 'a'
od[3] = 'c'
od[2] = 'b'
od[4] = 'd'
od[6] = 'f'
print(od)
print(od.keys())

有序字典可以记录元素插入的顺序,打印的时候也是按照这个顺序输出打印
3.6版本的python的字典就是记录key插入的顺序

字典练习
数字统计

用户输入一个数字
    打印每一位数字及其重复的次数
数字重复统计
    随机产生100个整数
    数字的范围[-1000, 1000]
    升序输出所有不同的数字及其重复的次数

import random
from collections import OrderedDict

num_list = []
od = OrderedDict()

# num_list = [ random.randint(-1000, 1000) for _ in range(100)]
for _ in range(100):
    num_list.append(random.randint(-1000, 1000))
num_list.sort()
# print(num_list)

for k in num_list:
    if k not in od.keys():
        od.setdefault(k, 0)
        od[k] += 1
    else:
        od[k] += 1

for k, v in od.items():
    print('{}: {}'.format(k, v))

字符串重复统计

字符表‘abcd...z'
随机挑选2个字母组成字符串,共挑选100个
降序输出所有不同的字符串及重复的次数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值