美文网首页
2018-08-28 day7 dict和set

2018-08-28 day7 dict和set

作者: rzlong | 来源:发表于2018-08-28 20:53 被阅读0次

字典

声明字典
  • 字典是容器类型,也是序列。以键值对作为元素(key-value)。
  • 键值对: key:value ,键必须唯一且不可改变(数值、布尔、字符串和元组);通常使用字符串;若定义了相同的key时,它会按照后一个出现的值为准;值可以不唯一,可以是任何类型的数据
  • 使用{ }表示
  • 字典是可变的(元素可变)
dict1 = {'hero':'lucian', 2:'oneplus', True:'True',(10,20):'坐标(10,20)'}
print(dict1)

result:
{'hero': 'lucian', 2: 'oneplus', True: 'True', (10, 20): '坐标(10,20)'}
获取字典的元素对应的值
  • 字典存数据,实质存的value,key是获取value的手段
  • dict_name[key] -- 通过key获取值,若key不存在时返回KeyError
print(dict_list['name'],dict_list['medicine'])

result:
shiting wang yuting
  • dict_name.get(key) -- 通过key获取值,若key不存在返回None,代表没有
print(dict_list.get('a'))

result:
None

:key肯定存在时用[],可能不存在或不希望返回错误时用get

字典遍历
  • 遍历字典直接取到字典的key值
for k in person:
    print(k,person[k])
for k,v in person.items():
    print(k,v)

result:
name 某宝
age 10
boss 某云
sex 男
name 某宝
age 10
boss 某云
sex 男
修改元素
  • 语法 dict_name[key] = value
person['sex'] = '女'
print(person)
增加元素
  • dict_name[new_key] = value
del person['age']
删除元素
  • del dict_name[key]
a = person.pop('boss') #a保存的是删除key对应的value

字典相关计算

  • 字典不支持 + 和 *
  • in 和 not in -- 判断key在字典中是否存在
  • len(dict_name) 获取字典中元素的数量
  • dict_name.clear() 删除字典中所有的元素
  • dict_name.copy() 复制字典中的键值对到新的字典,属于浅拷贝
computer1 = computers #复制computers的地址给computer1
computer2 = computers.copy() #复制computers的全部元素到一个新的内存空间中,并且将新的地址给computer2
  • copy.deepcopy(dict_name) 需先导入copy模块,属于深拷贝
  • dict.fromkeys(seq, Default = None) 将列表转换字典,将序列seq中每个值作为key,默认值为value创建一个新的字典.默认值不写时为None
print(dict.fromkeys(computers,12))
  • 获取字典项
# dict_name.keys() 获取字典中的所有key,返回dict_keys类型
print(type(computers.keys()),computers.keys())
# dict_name.values() 获取字典中所有key对应的value,返回dict_values类型
print(type(computers.values()),computers.values())
# dict_name.items() 获取字典所有的元,返回dict_items类型。
print(type(computers.items()),computers.items())
# 不推荐使用,遍历数据时会转换数据,占用更大的资源。

result:
<class 'dict_keys'> dict_keys(['brand', 'color'])
<class 'dict_values'> dict_values(['联想', 'white'])
<class 'dict_items'> dict_items([('brand', '联想'), ('color', 'white')])
  • dict_name.setdefault(key, Default=None) 给字典添加键值对,如果键值对存在,就不作处理
computers.setdefault('value','nice')
  • dict1.update(dict2) 将字典2的键值对更新到字典1中,如果字典2的键值对在字典1中存在,就更新对应键的值
dict1 = {'age':10,'name':'007'}
dict2 = {'num':10,'name':'king'}
print('before updating: ',dict1)
dict1.update(dict2)

result:
{'brand': '联想', 'color': 'white', 'value': 'nice'}
before updating:  {'age': 10, 'name': '007'}
updated:  {'age': 10, 'name': 'king', 'num': 10}


list和dict的组合

  • 数据保存多个数据的类型是同一种类型,使用列表
    保存多个学生的信息 students_info = [{}, {}, {}...]
  • 数据保存多个数据的类型不同,使用字典
    如保存
student_info = [
    {'name':'lucian','age':10},
    {'name':'lax','age':12},
    {'name':'gaylun','age':14}
]

py_class = {
    'class_name':'python1806',
    'students':student_info,
    'location':'2_classroom'
}
  • 输入一名学生的姓名,根据姓名删除对应的学生
name = input('输入姓名:')
for item in py_class['students'][:]:
    if item['name'] == name:
        py_class['students'].remove(item)
        print('已删除' )
        print(py_class)

集合set

集合在python中是一种无序的可变且值唯一的容器类型

  • 声明集合
set1 = {1,3,'a',(1,2),True}
print(set1,type(set1))
set2 = set('dongdongqiang')
print(set2)

# 将其他的序列转换成集合,自带一个去重的功能
#定义空集合必须 set1 = set()
result:
{(1, 2), 1, 3, 'a'} <class 'set'>
{'g', 'q', 'n', 'o', 'i', 'd', 'a'}
  • 集合不能单独获取其中的某一个元素的,只能通过遍历获取集合的元素
for item in set1:
    print(item)

result:
(1, 2)
1
3
a
  • 添加元素
    • set_name.add(obj)
    set1.remove('old')
    print(set1)
    
    result:
    {(1, 2), 1, 3, 'goods', 'a'}
    
    • set1.update(set2)
    set1.update({'new','old'})
    print(set1)
    
    result:
    {(1, 2), 1, 'new', 3, 'goods', 'old', 'a'}
    
  • 删除元素
    • set_name.remove(obj) 删除集合中指定的元素
    set1.remove('old')
    print(set1)
    
    result:
    {(1, 2), 1, 'new', 3, 'goods', 'a'}
    
    • set_name.clear() 删除整个集合的元素
    • del set_name 删除集合
  • 集合中不能修改元素
  • 数学相关运算
# a.判断包含情况
'''
集合1 >= 集合2 判断集合2是集合1的子集
集合1 <= 集合2 判断集合1是集合2的子集
'''
# b.求交并补
'''
并集:集合1 | 集合2 求两个集合的全部部分
交集:集合1 & 交集2 求两个集合公共部分
补集:集合1 ^ 集合2 求两个集合除公共部分以外的部分
'''
# c.差集
'''
集合1 - 集合2  集合1对于集合2没有的部分
'''

相关文章

  • 2018-08-28 day7 dict和set

    字典 声明字典 字典是容器类型,也是序列。以键值对作为元素(key-value)。 键值对: key:value ...

  • dict和set

    dict的使用 dict是一个类,它的方法都是由c语言实现。dict的优点是查询速度快,缺点是占用内存。 1.cl...

  • dict和set

    dict 为什么dict查找速度这么快? 因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要...

  • dict 和set

    dict:无论表有多大,查找速度都不会变慢,但会占用大量内存,key为不可变对象,(如字符串整数可作为不可变对象,...

  • dict和set

    dict set

  • dict和set

    dict:{ } 关键值:字典、键Key-值Value(键值对)、key不可变、value可变、无序 dict全称...

  • Dict和Set

    Dict Python内置了字典Dict(全称Dictionary),使用键-值(key-value)存储,具有极...

  • dict和set

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(k...

  • dict(key与value)和set(key)

    dict和set dict (字典的使用) Python 内置了字典:dict的支持,dict全程dictiona...

  • 6、Dict和Set

    6.1Dict 用dict表示“名字”-“成绩”的查找表如下: d = { 'Adam': 95, 'Li...

网友评论

      本文标题:2018-08-28 day7 dict和set

      本文链接:https://www.haomeiwen.com/subject/ntzqwftx.html