字典
字典的概念
1.假如有一个列表:
li = [“Pyth”,“java”,“C”]
li[0]=“Python”
li.sort()
2.假如统计学生信息,包括学号,姓名,年龄,
li = [[20190101,“Tom”,18],
[20190201,“Jack”,19],
…
循环遍历,十分复杂
考虑字典.
字典是列表除外python中使用最灵活的内置数据类型.
字典是一种可变的数据类型.
和列表的区别:
- 列表有序,字典无序
- 列表通过索引(偏移)访问元素,字典通过键(key)访问
字典的基本格式
dic = {key1:value1, key2:value2,...,keyn:valuen}
值可以取任意数据类型,单键不可以,必须为不可变数据类型,即key必须是可哈希(不可变)
特点:
- 1.key:value,键值对之间用冒号(:)连接
- 2.key:value 组成字典的一个元素
- 3.键值对之间用逗号(,)隔开
- 4.整个字典用{}包裹
字典的创建
空字典
dic = {}
print(type(dic))
#dictionary
创建多元字典
info = {"id":20190101,"name":"tom","age":18}
强转
dic = dict(id=20190101,name="tom",age = 18)
print(dic)
zip()
key = ("id","name","age")
value = (20190101,"tom",18)
tp = tuple(zip(key,value))
print(tp,type(tp))
print(dict((('id',20190101),('name','tom'),('age',18)))
print(dir({}))
通过字典的fromkeys方法创建字典
格式:
dict.fromkeys(seq,val=None)
- 创建并返回一个字典
以seq中的元素作为该字典的键
val的值作为该字典中所有键所对应的初始值;如不提供,默认None.
dic = dict.fromkeys(["tom","jack","lucy"],666666)
print(dic)
#{'tom': 666666, 'jack': 666666, 'lucy': 666666}
字典的常见操作
增
- 直接添加键值对(dic[key] = value)
--通过使用变量名[“键”] = “值”.
1 如果key不存在,就新建键值对(key:value)
2 如果存在,则更新值(value)
dic = {}
dic["id"]= 20190101
dic["name"] = "tom"
dic["age"] = 19
print(dic)
#{'id': 20190101, 'name': 'tom', 'age': 19}
#添加多元字典
li =[]
while True:
dic = {}
id = int(input("输入 id:\t"))
name = input("请输入name:\t")
age = int(input("请输入age:\t"))
dic["id"] = id
dic["name"] = name
dic["age"] = age
li.append(dic)
flag = input("continue?(y/n,不区分大小写):\t")
if flag.lower() == "n":
break
print(li)
更新
dic.update(dic)
把字典dic中的键值对(key:value)更新到dict中
在两个字典的键完全不同,则将dic的键值对全部添加至dict中
存在相同键,则更新dict中对应的值
#update
dic = {"job":"it","hobby":"read"}
dic = {"name"
dict = {"id":20190101,"name":"tom","age":22
dict.update(dic)
print(dict)
#更新值
删
- dict.pop
- 格式:dict.pop(key[,default])
-
- 如果key存在于dict中,删除并返回dict[key]
-
- 如果不存在,给出默认值则返回默认值,未给出,报错
dict = {"id": 2019,"name":"tom","age":22}
print(dict.pop("job","it"))
print(dict)
#dict.popitem() popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
dict = {"id": 2019,"name":"tom","age":22}
print(dict.popitem())
key,value = dict.popitem()
print(dict)
print(key,value)
#del dict[key]
dict = {"id": 2019,"name":"tom","age":22}
del dict["age"]
print(dict)
#{'id': 2019, 'name': 'tom'}
#dict.clear()
dict = {"id": 2019,"name":"tom","age":22}
print(dict.clear())
print(dict)
改
- 直接修改
dic = {"id":20190101,"name":"tom","age":22}
dic["job"] = 20190201
print(dic)
-
dict.setdefault()
- 键存在,不改动,返回字典中的值
- 不存在,在字典中添加相应的键值对,并返回对应的值
dic = {"id":20190101,"name":"tom","age":22}
# print(dic.setdefault("name","jack")) #键存在
print(dic.setdefault("salary",12000))
print(dic)
#12000
#{'id': 20190101, 'name': 'tom', 'age': 22, 'salary': 12000}
查
字典值的访问
- 直接通过字典的key访问value
dic = {"id":20190101,"name":"tom","age":22}
print(dic["id"]) #存在返回对应的值
print(dic["job"]) #不存在,直接报错
-
dict.get()访问value
- 语法格式dict.get(key[,default])
- 不确定字典中是否存在某个键而又想对其进行操作,比如获取值---->get方法
- 当key不存在的时候,不会抛出异常,返回None
dic = {"id":20190101,"name":"tom","age":22}
#print(dic.get("id",20190201))
print(dic.get("salary",12000))
print(dic)
遍历
dic = {"id":20190101,"name":"tom","age":22}
# print(dic.keys(),type(dic.keys()))
### dict_keys(['id', 'name', 'age']) <class 'dict_keys'>
# for key in dic.keys():
# print(key,end=" ")
### id name age
# for value in dic.values():
# print(value,end=" ")
### 20190101 tom 22
# for item in dic.items():
# print(item,end=" ")
### ('id', 20190101) ('name', 'tom') ('age', 22)
# for key,value in dic.items():
# print(key,":",value)
### id : 20190101
name : tom
age : 22
# for key,value in dic.items();# print(key,":",value)# if {}:# print("111")# print("222")
集合
–无序
–不可重复
–不可更改
+内部的元素是可哈希的
+集合本身是不可哈希的
–用{}括起来的单元素数据集
用途:
-去重
空集合的创建
python
>>>st = set()
>>>st
set()
>>>st={}
>>>type(st)
<class'dict'>
>>>
```
多元素的集合创建
>>> st = {1,2,3,"a","b","C"}
>>> type(st)
<class 'set'>
>>>
强转
>>> sr = "city"
>>> st = set(sr)
>>> st
{'c', 't', 'i', 'y'}
>>>
{'c', 't', 'i', 'y'}
>>> sr = "citty"
>>> st = set(sr)
>>> st
{'c', 't', 'i', 'y'}
>>>
集合基本操作
增
-set.add()
-set.update()
删
- set.pop() ,删除排序最小的元素
- set.discard(),移除元素,不存在,不会报错
- set.remove(),移除元素,不存咋,报错
- del set
改
不可改的
查
不可查的
遍历
st = {“city”,“college”,“zhejiang”}
for i in st:
… print(i,end=" ")
…
zhejiang college city >>>
for i in enumerate(st):
… print(i)
…
(0, ‘zhejiang’)
(1, ‘college’)
(2, ‘city’)
集合的基本运算
子集
>>> a = set("abcd")
>>> b = set("cdef")
>>> c = set("ab")
>>> a,
({'b', 'c', 'd', 'a'},)
>>> a,b,c
({'b', 'c', 'd', 'a'}, {'c', 'f', 'd', 'e'}, {'b', 'a'})
>>> c>a
False
>>> a>c
True
>>> d = set("ca"
... d<b
File "<stdin>", line 2
d<b
^
SyntaxError: invalid syntax
>>> a = set("abcd")
>>> c = set("af")
>>> c<a
False
交集
-&
-set.intersection()
>>> a = set("abcd")
>>> b = set("cdef")
>>> c = set("ab")
>>> a&b
{'c', 'd'}
>>> a.intersection(b)
{'c', 'd'}
>>>
并集
- |
- set.union()
>>> a = set("abcd")
>>> b = set("cdef")
>>> c = set("ab")
>>> a|b
{'d', 'c', 'f', 'e', 'b', 'a'}
>>> a.union(b)
{'d', 'c', 'f', 'e', 'b', 'a'}
>>>
差集
-
- set.difference()
>>> c = set("ab")
>>> b = set("cdef")
>>> a = set("abcd")
>>> a-b
{'b', 'a'}
>>> a.difference(b)
{'b', 'a'}
>>>