字典集合

字典

字典的概念

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'}
>>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值