python 05 字典
[TOC]
字典——dict { }
字典是无序,可变的数据类型。
字典:用于存储数据,存储大量数据,字典要比列表快;将数据和数据之间进行关联。
1. 定义:
dic = {键:值,键:值} #每个 键值对 以逗号分隔成一个元素
字典的值: 可以是任意的数据类型。
字典的键:必须是可哈希的——不可改变的数据类型;要求键唯一,如果有重复的,则后面的值会把前面的值覆盖掉。
(注:可哈希的 -- 不可变的数据类型(数字、字符串、布尔值) -- 避免哈希冲突使用了 “开放寻址法” )
(不可哈希的 -- 可变的数据类型 (列表、字典) )
2. 增:
dic = {"a":10,"b":20,"c":30}
dic["键"] = 值 # 暴力添加
dic["d"] = 40
dic.setdefault(键,值) # 通过键去字典中查询,如果键不存在执行添加,如果键存在则不会添加
dic.setdefault("c",40) # "c" 存在,不添加
dic.setdefault("f",40) # "f"不存在,添加到字典
3. 删:
del dic["a"] # 通过字典的键,删除键值对
dic.pop("b") # 通过字典的键,删除键值对,有返回值,返回的是被删除的值
dic.clear() # 清空字典
4. 改:
dic["b"] = 200 #字典中没有此键值对的时候就是添加,当键在字典中存在的时候就是修改 # "有则改,无则加"
dic.update(dic1) # 更新,里面必须放字典。update括号中的字典(dic1)级别高于前面的字典(dic)
# 运行:先将具有相同键的内容覆盖,再在字典末尾添加dic没有的键值对
5. 查:
for i in dic:
print(i) # for 循环获取的是键值对的键
dic.get(键) # 通过键获取值,如果键不存在字典中会返回 None
dic[键] # 通过键获取值,如果键不存在字典中会报错!
6. 其他操作:
dic = {"a":1,"b":2,"c":3}
# 1.
for i in dic:
print(i,dic.get(i)) # 循环输出所有的键和值 a 1 b 2 c 3
# 2. keys() 所有的键
print(dic.keys()) # 高仿列表,获取的是字典中所有的键 -- dict_keys(['a', 'b', 'c']) 支持for循环 不支持索引
for i in dic.keys():
print(i) # 循环输出所有的键 a b c
print(dic.keys()[0]) # 报错 'dict_keys' object does not support indexing(不支持索引)
# 3. values() 所有的值
print(dic.values()) # 高仿列表,获取的是字典中所有的值 ——dict_values([1, 2, 3])
print(list(dic.values())) # 获取的是字典中所有的值,转换成 真的列表
# 4. items() 所有的键和值
print(dic.items()) # 高仿列表,获取的是字典中所有的键和值,存放在元组中 ——dict_items([('a', 1), ('b', 2), ('c', 3)])
for i in dic.items():
print(i[0],i[1]) #将键和值从元组中循环打印出 a 1 b 2 c 3
# 5. 将字典中的值放到列表中
lst = []
for i in dic:
lst.append(dic[i])
print(lst)
7. 解构:
a = 10
b = 20
a,b = b,a
print(a,b) # 实现a,b数字的交换,列表、元组都可以
a,_,b = (3,4,5)
print(a,b) # 3 5 等号后边的值和前面的变量名要一一对应(假如只要a,b)
a = 10,12 # 本质就是一个元组
print(a) # (10,12)
a,b = "23"
print(a,b) # 2 3
a,b = {"1":"a","2":"b"}
print(a,b) #输出 1 2(键)
for i in dic.items():
print(i) # 获取的是每个元素,结果:(键,值)
for k,v in dic.items():
print(k,v) # 获取每个元素的键和值
8. 字典的嵌套:
查找的时候一次一次的通过键查找。
dic[键]
dic = {1001:["周杰伦","林俊杰"],
1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}}}
print(dic[1002]["汪峰"]["前妻2"][1]) # 熊二
python 05 字典的更多相关文章
- python 05—字典
一.字典的键是唯一的 键:简单对象,例[字符串.整数.浮点数.bool值] list不能作为键,但可以作为值. 例: score = { '萧峰' : 95, '段誉' : 97, '虚竹' : 89 ...
- python --- 05 字典 集合
一.字典 可变数据类型 {key:value}形式 查找效率高 key值必须是不可变的数据类型 1.增删改查 1).增 dic["新key"] = "新va ...
- Python中字典和集合
Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...
- Python的字典
1. Python的字典 1.1. 字典的定义 在Python中,字典是一种key-value的数据类型,也是唯一的映射类型:字典还是另一种可变容器类型,且可存储任意类型对象,其中也可包括其他容器 ...
- Python的字典和JSON
Python的字典和JSON在表现形式上非常相似 #这是Python中的一个字典 dic = { 'str': 'this is a string', 'list': [1, 2, 'a', 'b'] ...
- python基础--字典
Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...
- Python dictionary 字典 常用法
Python dictionary 字典 常用法 d = {} d.has_key(key_in) # if has the key of key_in d.keys() ...
- python有序字典OrderedDict()
转python创建有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections " ...
- python:字典嵌套列表
Python的字典{ }以键值对的形式保存数据,可以以键来访问字典中保存的值而不能用下标访问.字典中几乎可以包含任意的变量,字典,数列,元组.数列也一样. python的列表[ ]与字典不同,列表通过 ...
随机推荐
- [小米OJ] 10. 爬楼梯
dp 另: 小米oj上的测试样例是错的 ; ) function solution(line) { if (line == 0) return 0; if (line == 1) return 1; ...
- C语言 结构体字节对齐问题
摘选自这位大神的博客 方法一: 结构体在内存中分配一块连续的内存,但结构体内的变量并不一定是连续存放的,这涉及到内存对齐. 原则1 数据成员对齐规则:结构(struct或联合union)的数据成员, ...
- spark 源码分析之十八 -- Spark存储体系剖析
本篇文章主要剖析BlockManager相关的类以及总结Spark底层存储体系. 总述 先看 BlockManager相关类之间的关系如下: 我们从NettyRpcEnv 开始,做一下简单说明. Ne ...
- Linux系统安装jdk——.tar.gz版
1.rpm.deb.tar.gz的区别: rpm格式的软件包适用于基于Red Hat发行版的系统,例如Red Hat Linux.SUSE.Fedora. deb格式的软件包则是适用于基于Debian ...
- Java EE API
百度云:链接:http://pan.baidu.com/s/1nvTlMLb 密码:vulq 官方下载网址:http://www.oracle.com/technetwork/java/jav ...
- 带新手玩转MVC——不讲道理就是干(下)
带新手玩转MVC——不讲道理就是干(下) 前言:废话不多说,直接开干 完整案例演示 案例代码 LoginServlet package servlet; import domain.User; imp ...
- Jmeter CSV config使用
1.添加线程组,自己给线程组命名 2.添加CSV data set config 如上,filename是文件的名字 新增.txt文件,将变量写在文件中,完成后,更名为.csv:变量之间用逗号隔开(第 ...
- Git/Github使用方法小记
今天把人间网的桌面客户端renjian-deck正式开源了,之前对javascript的了解其实非常的不够的,所以这一次的代码写的也是乱七八糟重用性及其低下,虽然我无数次的想把代码重新整理一下,不过还 ...
- oracle的自增序列
因为oracle中的自增序列与mysql数据库是不一样的,所以在这里唠嗑一下oracle的自增序列 1. 创建和修改自增序列 --创建序列的语法 -- create sequence [user.]s ...
- java 遍历map的四种方法
16:21:42 Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是Map中的一个接口,他的用途是表示一个映射项( ...