Python学习笔记(5)-dict和set

来源:互联网 发布:c语言中short什么意思 编辑:程序博客网 时间:2024/05/17 18:16

简单的字典

字典,类似java中Map,数据都是键-值对(key-value)的形式存储,可对比着记忆
(注意:1.字典使用{ }表示,列表是[ ] 2.key必须是不变的,才能计算出value的值,如字符串,整数等,但是列表是可变的,不能作为字典的key)
代码:

user = {'name': 'gourdBaBy', 'age': '1'} #注意键值对中间是冒号 : 不同键值对中间是逗号 , print("name: " + user['name'])print("age: " + user['age'])

结果:

name: gourdBaByage: 1

使用字典

添加键-值对

(字典添加时不关心添加顺序,一般新建空字典,然后根据逻辑添加数据)

代码:

user = {'name': 'gourdBaBy', 'age': 1}print(user)user['height'] = 60  #添加键值对的时候直接赋值给新key即可user['ability'] = 'ironskin'print(user)

结果:

{'age': 1, 'name': 'gourdBaBy'}{'height': 60, 'age': 1, 'ability': 'ironskin', 'name': 'gourdBaBy'}

修改字典中的值

同列表一样,直接赋值语句即可
代码:

user = {'name': 'gourdBaBy', 'age': 1}print(user['name'])user['name'] = 'yeye' #此处修改name的值print(user['name'])

结果:

gourdBaByyeye

判断字典中是否含有某个key,例如

代码:

info = {'tom': 18, 'jack': 22, 'lili': 55}print ('tom' in info)  #in只是查询键(key)是否存在print ('lucy' in info)print (info.get('tom')) #get()可指定key来查询是否存在print (info.get('lucy'))print (info.get('lucy', 100)) #get()不存在时,可指定返回值

结果:

TrueFalse18None100

删除键-值对

使用del语句

代码:

user = {'name': 'gourdBaBy', 'age': 1}print(user)del user['age']  #删除age键值对print(user)

结果:

{'age': 1, 'name': 'gourdBaBy'}{'name': 'gourdBaBy'}

还可以使用pop()语句,效果同列表,但pop()必须带参数,因为列表是有序的,默认删除最后的一项,字典是无序的

代码:

info = {'tom': 18, 'jack': 22, 'lili': 55}print (info.pop('tom'))  print info# print (info.pop())  #该句会报错,会提示必须传入参数

结果:

18{'lili': 55, 'jack': 22}

遍历字典

可以用for循环遍历字典,字典是没有顺序的
代码:

user = {'name': 'gourdBaBy',  #字典建议写成这样的格式        'age': 1,        'ability': 'ironskin',        'height': 60}for key, value in user.items():  #注意是items()    print("Key: " + key)    print("Value: " + str(value) + "\n")

结果:

Key: nameValue: gourdBaByKey: abilityValue: ironskinKey: ageValue: 1Key: heightValue: 60

若代码中的

for key, value in user.items():

改为

for key in user.keys():或者for key in user:(此状态是默认状态)

则只遍历键(key)

同理,若改为

for value in user.values():

则只遍历值(value)

若有重复的值,可以使用set()函数,传入的参数是个list对结果进行重复值清除的处理

代码:

user = {'A': 2,        'B': 1,        'C': 2,        'D': 1}for value in set(user.values()): #set函数处理结果,清除重复值    print("Value: " + str(value))

结果:

Value: 1Value: 2

set

set是个无序不重复的集合,可传入iterable类型的数据,如无嵌套类型的列表和字典或字符串

代码:

a = {'a': 'b', 'c': 'd', 'c': 'e'}print (set(a))  #传入字典,只显示key值,且不重复a = 'ssdfasdf'print (set(a))a = ['a', 'b', 'c', 'c']print (set(a))

结果:

set(['a', 'c'])set(['a', 's', 'd', 'f'])set(['a', 'c', 'b'])

set添加和删除

添加用add()方法,删除用remove()方法

代码:

myset = set(['a', 'b', 'c'])  #字典用法相同print (myset)myset.add('d')print (myset)myset.remove('a')print (myset)

结果:

set(['a', 'c', 'b'])set(['a', 'c', 'b', 'd'])set(['c', 'b', 'd'])

set交集并集

两个set可以做数学里交集和并集的运算

代码:

myset1 = set(['a', 'b', 'c'])myset2 = set(['a', 'c', 'd'])print (myset1 & myset2)  #相交print (myset1 | myset2)  #相并

结果:

set(['a', 'c'])set(['a', 'c', 'b', 'd'])

嵌套

列表中嵌套字典

代码:

user1 = {'name': 'A', 'age': 11}user2 = {'name': 'B', 'age': 12}user3 = {'name': 'C', 'age': 13}users = [user1, user2, user3]  #列表中存储字典for user in users:    print(user)

结果:

{'name': 'A', 'age': 11}{'name': 'B', 'age': 12}{'name': 'C', 'age': 13}

e.g. 创建30个相同的字典,存储到列表中,只打印前4个。
代码:

# 先创建一个空列表,用于存储创建的字典users = []# 创建30个字典for user in range(30):  #循环30次,注意rang()函数的使用    user = {'name': 'Jack', 'age': 10}    users.append(user)# 显示前4个for user in users[:4]:    print(user)print("...")

结果:

{'name': 'Jack', 'age': 10}{'name': 'Jack', 'age': 10}{'name': 'Jack', 'age': 10}{'name': 'Jack', 'age': 10}...

字典中嵌套列表

注意:键(key)不能是列表,只能值(value)是列表

代码:

user = {    'name': 'Jack',    'favorite_book': ['葫芦娃', '少林寺', '尼姑庵'],}print("你的名字是:\n" + user['name'] + "\n你最喜欢的书是:")for book in user['favorite_book']:  #遍历字典favorite_book键的值(列表)    print(book)

结果:

你的名字是:Jack你最喜欢的书是:葫芦娃少林寺尼姑庵

字典中嵌套字典

注意:键(key)不能是字典,只能值(value)是字典
代码:

users = {    'BigDog': {  #键(key)为BigDog,值(value)为后边的字典        'name': 'Jack',        'age': 10,        'location': 'CHN',    },    'SmallCat': {        'name': 'Lili',        'age': 12,        'location': 'USA',    },}for username, userinfo in users.items(): #键值对    print("用户名是:" + username)    print("个人信息是:")    print("\t名字:" + userinfo['name'])    print("\t年龄:" + str(userinfo['age']))    print("\t地址:" + userinfo['location'])

结果:

用户名是:SmallCat个人信息是:    名字:Lili    年龄:12    地址:USA用户名是:BigDog    个人信息是:    名字:Jack    年龄:10    地址:CHN
0 0
原创粉丝点击