Python字典及集合

Python列表、元组、字典及集合

  • 1 字典
    • 1.1 字典的创建
    • 1.2 字典的特性
    • 1.3 字典的常用方法
      • 1.3.1 查看字典
      • 1.3.2 增加和修改
      • 1.3.3 删除
    • 1.4 遍历字典
  • 2 集合
    • 2.1 集合的创建
    • 2.2 集合的特性
    • 2.3 集合的常用操作
      • 2.3.1 添加集合元素
      • 2.3.2 删除集合的元素
      • 2.3.3 查看集合元素
    • 2.4 defaultdict:默认字典
    • 2.5 练习

1 字典

字典是一系列键—值对,每个键都与一个值相关联,可以通过键来访问与之相关联的值

1.1 字典的创建

  • 字典用放在花括号{}中的一系列键—值对表示,键—值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键—值对之间用逗号分隔:dick={key1:value1,key2:value2}
dict1={
     'name':'tom','age':12}
print(dict1,type(dict1))
输出:
{
     'name': 'tom', 'age': 12} <class 'dict'>

1.2 字典的特性

  • 不支持+,*, index, slice(因为集合无序不重复的)
  • 支持成员操作符in和not in(判断是否为所有key值的成员)
dict1={
     'name':'tom','age':12}
print('name' in dict1) ##True
print('tom' in dict1)  ##False

1.3 字典的常用方法

1.3.1 查看字典

  • 查看所有: keys, values, items
  • 查看局部: d[key], d.get(key), d.get(key, default-value)
dict1={
     'name':'tom','age':12}
print(dict1) ##{'name': 'tom', 'age': 12}
# 查看字典所有的key值
print(dict1.keys()) ##dict_keys(['name', 'age'])
 # 查看字典所有的value值
print(dict1.values()) ##dict_values(['tom', 12])
 查看字典所有的key-value值(item元素)
print(dict1.items()) ##dict_items([('name', 'tom'), ('age', 12)])
# 查看key对应的vlaue值,如果不存在会报错
dict1={
     'name':'tom','age':12}
print(dict1['name']) ##tom
print(dict1['class']) ##报错
# get()查看key对应的vlaue值,如果不存在返回None
print(dict1.get('name')) ##tom
print(dict1.get('class')) ##None
# get()查看key对应的vlaue值, 如果存在则返回,如果不存在则返回默认值.
print(dict1.get('class','linux')) ##linux
# get()查看key对应的vlaue值,默认值不生效
print(dict1.get('name','jerry')) ##tom

1.3.2 增加和修改

dict1={
     'name':'tom','age':12}
# key不存在就添加
dict1['class']='linux'
print(dict1) ##{'name': 'tom', 'age': 12, 'class': 'linux'}
dict1={
     'name':'tom','age':12}
 # key存在则修改value值
dict1['name']='jerry'
print(dict1) ##{'name': 'jerry', 'age': 12}
  • s.setdefault():key不存在就添加;key存在,则什么也不做
dict1={
     'name':'tom','age':12}
dict1.setdefault('class','linux')
print(dict1) ##{'name': 'tom', 'age': 12, 'class': 'linux'}
dict1.setdefault('class','linux')
print(dict1) ##{'name': 'tom', 'age': 12, 'class': 'linux'}

1.3.3 删除

dict1={
     'name':'tom','age':12}
dict1.pop('name')
print(dict1) ##{'age': 12}

dict1={
     'name':'tom','age':12}
del dict1['name']
print(dict1) ##{'age': 12}

1.4 遍历字典

(1) 默认情况下,字典只会遍历key值

dict1={
     'name':'tom','age':12}
for i in dict1:
    print(i)   
输出:
name
age

(2)遍历字典的key

dict1={
     'name':'tom','age':12}
for i in dict1.keys():
    print(i)
输出:
name
age

(3)遍历字典的value

dict1={
     'name':'tom','age':12}
for i in dict1.values():
    print(i)
输出:
tom
12

(4)遍历字典的key和value

dict1={
     'name':'tom','age':12}
for i in dict1.items():
    print(i)
输出:
('name', 'tom')
('age', 12)
dict1={
     'name':'tom','age':12}
for k,v in dict1.items():
    print(k,v)
输出:
name tom
age 12

2 集合

2.1 集合的创建

  • 集合(set)是一个无序的不重复元素序列,集合是可变的数据类型
  • 集合的元素必须时不可变数据类型
  • 可以使用大括号 { } 或者 set() 函数创建集合
  • 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
set1=set()
set2={
     }
set3={
     1,2,4,'a'}
print(set1,type(set1)) ##set() 
print(set2,type(set2)) ##{} 
print(set3,type(set3)) ##{1, 2, 4, 'a'} 
set1={
     1,2,4,[1,4]}
print(set1,type(set1)) ##TypeError: unhashable type: 'list'

2.2 集合的特性

  • 不支持+,*, index, slice(因为集合无序不重复的)
  • 支持成员操作符in和not in
set1={
     1,2,4}
print(1 in set1) ##True

2.3 集合的常用操作

2.3.1 添加集合元素

  • set1.add():将元素添加到集合 set1 中,如果元素已存在,则不进行任何操作
set1={
     1,2,4}
set1.add(7)
print(set1) ##{1, 2, 4, 7}
set1={
     1,2,4}
set1.add(2)
print(set1) ##{1, 2, 4}
  • set1.update():添加多个元素,且参数可以是列表,元组,字典等
set1={
     1,2,4}
set1.update({
     1,5,7})
print(set1) ##{1, 2, 4, 5, 7}

2.3.2 删除集合的元素

  • set1.remove(x):将set1集合中的x元素删除,如果元素不存在会报错
set1={
     1,2,4}
set1.remove(2)
print(set1) ##{1, 4}
##删除集合不存在的元素
set1={
     1,2,4}
set1.remove(3)
print(set1) ##报错
  • set1.discard():移除集合中的元素,如果元素不存在,也不会报错
set1={
     1,2,4}
set1.discard(2)
print(set1) ##{1, 4}
##删除集合中不存在的元素不会报错
set1={
     1,2,4}
set1.discard(3)
print(set1) ##{1, 2, 4}
  • 随机删除集合中的一个元素,集合为空则报错:set1.pop()
set1={
     1,2,4}
set1.pop()
print(set1) ##{2, 4}
  • 清空集合:set1.clear()
set1={
     1,2,4}
set1.clear()
print(set1) ##set()

2.3.3 查看集合元素

  • 差集: s1 - s2
  • 交集: s1 & s2
  • 对称差分: s1 ^ s2
  • 并集: s1 | s2
s1={
     1,2,3,5}
s2={
     1,3,5,7}
print(s1-s2) ##差集{2}
print(s1&s2) ##交集{1, 3, 5}
print(s1^s2) ##对称差分{2, 7}
print(s1|s2) ##并集1 2, 3, 5, 7}
  • 判断是不是子集:s.issubset(s1)
  • s1.isdisjoint():判断两个集合是否包含相同的元素
s1={
     1,5}
s2={
     1,3,5,7}
print(s1.issubset(s2)) ##True
print(s1.isdisjoint(s2)) ##False

2.4 defaultdict:默认字典

  • 如果访问字典中不存在的键,会引发KeyError异常
d={
     "age":12}
print(d['name']) ##KeyError: 'name'
  • defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值
# 默认字典,设置默认value为int
from collections import defaultdict
d=defaultdict(int)
print(d['name']) ## 0
# 默认字典,设置默认value为列表
from collections import defaultdict
d=defaultdict(list)
d['root'].append('tom')
d['user'].extend(['lily','tony'])
print(d)
#defaultdict(, {'root': ['tom'], 'user': ['lily', 'tony']})

2.5 练习

Python字典及集合_第1张图片

import random
n = int(input("输入n:"))
s=set()
for i in range(n):
  s.add(random.randint(1,1000))
print(sorted(s,reverse=True))

你可能感兴趣的:(Python)