python数据结构总结:字典
2017-10-07 15:33
381 查看
字典
可变的,无序的,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()) 有序字典可以记录 4000 元素插入的顺序,打印的时候也是按照这个顺序输出打印 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个 降序输出所有不同的字符串及重复的次数
相关文章推荐
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python培训知识总结系列- 第二章Python数据结构第三部分-字典,集合
- Python数据结构中列表,字典,元组,集合的总结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python培训知识总结系列- 第二章Python数据结构第四部分-字典操作
- Python数据结构——列表、元组及字典
- Python3的字典dictionary和set初学总结(未完)
- Python数据结构之映射(內建字典)
- python字典与集合总结
- Python中几种数据结构的整理,列表、字典、元组、集合
- Python中列表、字典、元组、集合数据结构整理
- 遍历python字典几种方法总结(推荐)