05,.字典,集合

1.什么是字典

字典是以key:value的形式来保存数据,用{}表示.   存储的是key:value

坑: 字典存储数据的时候是用的hash值来存储. 算法不能变(python的)

# 数据必须是不可变的(可哈希). 字典的key必须是可哈希的(不可变).

dic = {"jay":"周杰伦", "jj": "林俊杰", "jolin":"蔡依林"}

print(dic[‘jay‘]) # 周杰伦

dic[‘jay‘] = "麻花藤"       #字典的key是不变的,可以通过key来带出value的信息

2.字典的增删改查

1.增加,添加:

dic[新key] = 元素

dic = {"意大利": "李云龙", "美国": "美国往事"}

dic["日本"] = "东京审判"  # 新key表示添加

dic[‘韩国‘] = "釜山行

dic["日本"] = "鬼片"

setdefault()(难点)   有添加的功能,如果key是存在的,不添加,    setdefault("","")

dic = {"意大利": "李云龙", "美国": "美国往事"}

dic.setdefault("美国", "三傻大闹宝莱坞")

print(dic)

2.删除

pop(key) 主要要记得,删除key后,同value一起删除掉

dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"}

dic.pop("郭德纲")

print(dic)     #{‘张艺谋‘: ‘红高粱‘, ‘李安‘: ‘断臂山‘, ‘陈凯歌‘: ‘霸王别姬‘}

popitem()   随机删除一项,在python早期的版本,字典是无序的

dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"}

dic.popitem()   # 随机删除一项. 在python早期版本  字典是无序的.

print(dic)   #{‘张艺谋‘: ‘红高粱‘, ‘李安‘: ‘断臂山‘, ‘陈凯歌‘: ‘霸王别姬‘}

clear()   清空字典中的所有内容

del dic["key"]    跟pop的区别在于使用的语法:pop(key)

dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"}

del dic["李安"]

print(dic)   #{‘张艺谋‘: ‘红高粱‘, ‘陈凯歌‘: ‘霸王别姬‘, ‘郭德纲‘: ‘祖宗十九代‘}

3.修改

dic[老key] = 值

dic = {"河南":"胡辣汤", "开封": "灌汤包", "武汉":"热干面"}

dic[‘河南‘] = "烩面" # 老key = 值

print(dic)

update()    更新字典

dic = {"id": 123, "name": ‘sylar‘, "age": 18}

dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}

dic.update(dic1) # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存 在key, 则新增.

print(dic)

print(dic1)

4.查询

dic[key]

dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}     #  直接使用key就可以拿到value

print(dic1["赵四四"]) # KeyError: ‘赵四四‘ key不存在

get(key,值)

print(dic1.get("刘能能"))  # None 当key不存在返回None

print(dic1.get("刘能能", "没有这个人")) # 当key不存在. 返回第二个参数. 默认第二个参数是None

setdefault("key","value")   第一个功能是天加(当key不存在的时候).   第二个功能是查询(根据你给的key查询).   如果key不存在,先执行新增的操作,在使用key把对应的value查询出来

3.字典的相关操作

1. keys() 获取到所有的键

dic = {"id": 123, "name": ‘sylar‘, "age": 18, "ok": "科?"}

print(dic.keys()) # dict_keys([‘id‘, ‘name‘, ‘age‘, ‘ok‘]) 不?管它是什么.当 成list来?就?

for key in dic.keys():

print(key)

2. values() 获取到所有的值

dic = {"id": 123, "name": ‘sylar‘, "age": 18, "ok": "科?"}

for value in dic.values():

print(value)

3. items() 拿到所有的键值对

dic = {"id": 123, "name": ‘sylar‘, "age": 18, "ok": "科?"}

print(dic.items()) # dict_items([(‘id‘, 123), (‘name‘, ‘sylar‘), (‘age‘, 18), (‘ok‘, ‘科?‘)]) 这个东?也是list. 只不过list中装的是tuple for key, value in dic.items(): # ?? 这个是解构

print(key, value)

4..字典的嵌套

wf = {

"name":"汪峰",

"age":52,

"hobby":["唱歌", "上头条", "穿皮裤"],

"wife": {

"name": "章子怡",

"age": 49,

"hobby":["演戏", "上电视", "当导师"],

"tishen": {

"name":"萌萌",

"age":28

},

"zhuli":{

"name":"磊磊",

"age": 20

}

},

"zhuli":{

"name":"宝宝",

"age":23,

"hobby":["抽烟","喝酒","烫头"]

},

"children":[{"name":"汪老大"}, {"name":"汪老二"}]

}

wf[‘children‘][1]["age"] = 2         #在children里面新建字典{"age":"2"}

print(wf)

# print(wf[‘zhuli‘][‘name‘])         #输出名字

print(wf)

# 汪峰老婆替身的名字

print(wf[‘wife‘][‘tishen‘][‘name‘])

# 汪峰老婆的第二个爱好

print(wf[‘wife‘][‘hobby‘][1])

# 汪峰助理的第三个爱好

print(wf[‘zhuli‘][‘hobby‘][2])

# 汪峰的助理+10岁

wf[‘zhuli‘][‘age‘] = wf[‘zhuli‘][‘age‘] + 10

# 汪峰的老婆添加一个爱好("导戏")

wf[‘wife‘][‘hobby‘].append("导戏") # 添加完毕了

# 删除汪峰助理的"抽烟"爱好

wf["zhuli"]["hobby"].remove("抽烟")

print(wf)

5.集合(不重要).去重复     唯一能用到的点,就是去重复

s = {"周润发", "大润发", "王润发", "周润发"} # 不重复的

print(s)      #{‘大润发‘, ‘周润发‘, ‘王润发‘}

集合和字典,是没有索引和切片的

集合中的元素是不可重复的.必须是可哈希的(不可变),字典中的key

lst = ["麻将", "牌九", "骰子", "扑克", "骰子", "扑克", "扑克", "扑克"]

#  把列表转化成集合  x 转化成y类型 y()

s = set(lst)

print(s)

# 把集合变回列表

# lst = list(s)

print(lst) # 顺序是乱的

空集合:set()

空元组: tuple()

空列表: list()

非空集合:{123}

新增:

add   添加    #需要记住的

s = {"刘嘉玲", "赵本山", "莱昂纳多迪卡普里奥", "罗纳尔多"}

s.add("刘嘉玲")

print(s)

update   迭代更新

s.update({"刘嘉玲", "刘能", "赵四"}) # 迭代更新

print(s)

删除:

pop() 随机弹一个,随机删除

ret = s.pop() # 随机删除一个

print(s)

print(ret)

remove()   指定删除

s.remove("罗纳尔多")

print(s)

修改 :  只能先删除在添加

s = {"刘嘉玲", "赵本山", "莱昂纳多迪卡普里奥", "罗纳尔多"}

把罗纳尔多修改成梅西

s.remove("罗纳尔多")

s.add("梅西")

print(s)

# 迭代

# for el in s:

#     print(el)

# s1 = {"门神", "灯神", "灯神你在笑什么?"}

# s2 = {"门神", "灯神", "你俩在干什么?"}

# 交集

# print(s1 & s2)

# print(s1.intersection(s2))

# 并集

# print(s1 | s2)

# print(s1.union(s2))

# # 差集

# print(s1 - s2) # s1中特有的内容

# print(s1.difference(s2))

#

# # 反交集

# print(s1 ^ s2) # 两个集合中特有的内容

# print(s1.symmetric_difference(s2))

# 集合本身是可变的数据类型 . 不可哈希

# 集合套集合->不能互相嵌套的

# 集合中的元素必须可哈希(不可变的)

# s = {123}

# 如果非要集合套集合

# s = frozenset({"哈哈","呵呵"}) # 不可变的数据类型(集合)

# for el in s:

#     print(el)

原文地址:https://www.cnblogs.com/yanghongtao/p/10046749.html

时间: 2024-11-02 03:11:00

05,.字典,集合的相关文章

python学习篇05 - 字典 集合

1.字典 定义:字典是以 key :value 的形式来保存数据,用{} 来表示,存储的是 key : value 查找效率比较高(注:字典存储数据时,用的是hash值来存储,算法不能变(python) 数据必须是不可变的(可哈希),字典的key必须是可哈希的(不可变) 列表是可变的,不可哈希 元组是不可变的,可哈希的 2.字典的增删改查 增加 dic[新key] = 值 dic.setdefault()  有添加的功能,如果key存在,不添加 流程:判断新key是否在字典中存在,如果已经存在了

python之路---05 字典 集合

二十.字典 可变数据类型 {key:value}形式   查找效率高   key值必须是不可变的数据类型 1.增删改查 1).增    dic["新key"] = "新value"        追加新元素 dic.setdefault(新key,新value)    如果key存在  不添加 如果key不存在, 添加{新key:新value} 2).删    .pop("key")      关键字删除 .popitem() 删除最后一项(早期

python :列表 字典 集合 类 ----局部变量可以改全局变量

#列表 字典 集合 类 ----局部变量可以改全局变量,除了整数和字符串 names=["alex","jack","luck"] def func(names): names[0]='金角大王' print("inside name:" ,names) func(names) print (names) #字符串 name='jack' name1=name name='jack_chen' print(name,name1

python中列表 元组 字典 集合的区别

列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复项的.如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的.pyt

【学习ios之路:Object-C】字典.集合.

1.不可变数据字典(NSDicionary) 字典:用来存储具有一一对应关系的数据. 一个key 对应一个 value ,key起到了唯一标示的作用,key必须是唯一的,但是一个vlaue可以对应多个key. 字典存储的是无序的元素,一对键值对组成了字典中的一个元素. ①.不可变字典初始化赋值 <span style="font-size:18px;"> //笑笑语法 NSDictionary *dic = @{@"name":@"zhangd

Swift字典集合

字典表示一种非常复杂的集合,允许按照某个键来访问元素.字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合.键集合是不能有重复元素的,而值集合是可以重复的,键和值是成对出现的. 如下图所示是字典结构的"学号与学生"集合,学号是键集合,不能重复,学生是值集合,可以重复. 提示 字典中键和值的集合是无序的,即便在添加的时候是按照顺序添加的,当取出这些键或值的时候,也会变得无序.字典集合更适合通过键快速访问值,就像查英文字典一样,键就是要查的英文单词,而值是英文单词的

OC 字典 集合

用字典能有什么好处? 字典是个大容器,它能够储存多个数据 用字典存储的数据具有一一对应的关系(使用key来标识value) 字典中一对键值对(key-value)叫做字典中的一个元素,也叫一个条目,只要是对象就可以,不限制类型 字典是无序的 字典中的key是唯一的,一个key只能对应一个value,一个value可以对应多个key 创建字典对象: 1.便利构造器(+号方法): NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKe

c#将枚举转换成字典集合

枚举在软件开发中的用途 1. 枚举类型(enum type)是具有一组命名常量的独特的值类型. 2. 枚举的定义: public enum Sex { 男 = 0, 女 = 1 } 或者:如果只给男赋值,那么女=1 public enum Sex { 男 = 0, 女 } 3. 我们在实际开发中,对于数据库的设计会经常需要很多状态字段(比如性别.审核状态.分类状态等等等等),而这些状态字段的值又只有固定的几个,这个时候我们一般会需要数据字典来维护这些数据.而数据字典该以什么形式存在呢? 以我自己

python基础一 -------如何在列表字典集合中根据条件筛选数据

如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) 1 filter(lambda x:x>0,data) 3,列表推倒式 4,效率对比:还是列表推导式稍高 二:字典 1,跟列表类似,推导式 先生成随机的字典(key从1-20) 过滤掉value是负数的值 三:集合 随机生成10个元素的集合 过滤掉小于0的元素,跟字典类似