3-python 元组 字典 集合的操作

元组 tuple

  • 本质是一种有序集合
  • 和list相似
  • 元组是不可变的
  • 用()创建
  • 其中类型可以不同
  • 如果一个元组中只有一个元素,在这个元素后面加一个逗号, 来消除歧义tuple5 = (100,)
  • 修改元组
tuple13 = (1, [100, 200, 300, 400], 3)
print(tuple13)
tuple13[1][2] = 666
print(tuple13) # 表面上看,tuple的元素改变了,但实际上变得不是tuple的元素,是list的元素
  • 删除

del tuple1 #被直接删除

  • 数据类型转换

tuple(list) list(tuple)

字典

  • 字典中的key必须唯一
  • key值必须是不可变的数据类型:字符串,元组,Number
  • list可变,不能作为key使用
  • value为任意数据类型,可以重复
  • 字典的本质是一种无序集合
  • 字典的访问
print(dic1.get("hmm"))
# get获取字典中的值,如果当前key值不存在,返回None,而常规访问会Error
  • 删除 pop(key)
  • 遍历
for key in dict1.keys()
for values in dict1.values()
for key, values in dict1.items()
  • 更新 dict1.update(dict2) 将 dict2中的键值对 更新到 dict1中
  • dict与list相比:
dict:1、查找及插入速度块,不会随着key及value的增加而变慢
      2、需要占用的内存大,内存浪费多
list:1、查找及插入速度会随着数据的增加而变慢
      2、需要占用的内存小,内存浪费少

案例:词频统计

提供了下面4个方法,个中优劣,自行体会。

items = ['bobby', 'bobby', 'kate', 'tom','tom','tom','tom']
dict1 = {}

for item in items:
     if item not in dict1:
         dict1[item] = 0
     dict1[item] += 1
print(dict1)

for item in items:
    dict1.setdefault(item,0)
    dict1[item] += 1
print(dict1)

for item in items:
    dict1[item] = dict1.setdefault(item,0) + 1
print(dict1)


for item in items:
    try:
        dict1[item] += 1
    except:
        dict1[item] = 1
print(dict1)

set集合

  • 与dict相比,set是一组存储key的集合,但不存储value
  • 本质:一个无序的及元素不重复的集合
set1 = set([1,2,3,4])
set2 = set([1,2,3,4,2,2,2,3,3,1,4,5,6,2,1]) #重复会被过滤
print(set2)  # {1,2,3,4,5,6}
       
# tuple
set3 = set((1,2,3,2,1))
print(set3)
       
# dict
set4 = set({"a":1, "b":2, "c":3})
print(set4)  # 只保留字典的key值  # {'a','b','c'}
       
dic5 = {"a":1, "b":2, "c":3}
set5 = set(dic5.values())
print(set5)
       
# 数据类型不匹配
# set6 = set(100)
# print(set6)  # TypeError: 'int' object is not iterable(迭代器)
# 迭代器就是一种集合数据类型
  • 添加数据
add() #只添加不可变的数据类型 元组字符串数字
update(iter) # list,tuple,string,dict(只有key)
  • 删除 remove()
  • set不支持下标访问
  • 集合的操作
set10 = set([1,2,3,4,5])
set11 = set([4,5,6,7,8])
# 1、&  交集
set12 = set10 & set11
print(set12)
# 2、|   并集
set13 = set10 | set11
print(set13)
# 3、^   补集
set14 = set10 ^ set11
print(set14)
  • 不同数据类型的装换
list-set
tuple->set
set->list
set->tuple
list->tuple
tuple->list
  • 将list中的重复数据删除可以用set
list1 = [1,2,3,6,3,2,1,1,1,9]
set1 = set(list1)  # 过滤重复数据
list2 = list(set1)
print(list2)

枚举遍历

  • 可以将下标及元素同时遍历
for i in enumerate(list1):
    print(i)
for index,data in enumerate(list1):
    print(index, data)

set1 = set([1,2,3]) # 让set也能有下标
for index,data in enumerate(set1):
    print(index, data)
    原文作者:rottengeek
    原文地址: https://segmentfault.com/a/1190000014418403
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞