Python学习(六)字典 集合

1、字典(排列无序)

帮助用户去表示一个事物的信息(事物是有多个属性)

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

一个简单的字典实例:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

也可如此创建字典:

dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }

独有功能:

info = {'name':'张三','age':28,'gender':'','hoppy':'打篮球'}

keys:获取字典中所有的键

print(info.keys())#获取字典中所有的键 dict_keys(['name', 'age', 'gender', 'hoppy'])
for item in info.keys():
    print(item)
 

values:获取字典中所有的值

print(info.values())#获取字典中所有的值 dict_values(['张三', 28, '男', '打篮球'])
for item in info.values():
    print(item)
 

items:获取字典中所有的键值对

print(info.items())#获取字典中所有的键值对 dict_items([('name', '张三'), ('age', 28), ('gender', '男'), ('hoppy', '打篮球')])
for v1,v2 in info.items():#将键值赋值给v1 v2
    print(v1,v2)
 

 get:通过健来查看,如果这个健不在这个字典中.就会返回None

info = {'k1':'v1','k2':'v2'}

v1 = info['k3']
v2 = info.get('k3') #None就是Python中的空
v3 = info.get('k3'666)#我们可以在get查找的时候自己定义返回的结果
print()

#None数据类型,该类型表示空(无任何功能,专门用于提供空值)

 pop / del:删除  

info = {'k1':'v1','k2':'v2'}
result = info.pop('k2')
print(info,result)

del info['k1']
print(info)

update:不存在,则添加;存在,则更新

info = {'k1':'v1','k2':'v2'}

#不存在,则添加;存在,则更新
info.update({'k3':'v3','k4':'v4','k2':666})
print(info)

练习题:

dict_ = {'name':'alex','password':'oldboy'}
user = input('用户:')
pwd = input('密码:')

if user == dict_['name'] and pwd ==dict_['password']:
    print('ok')
else:
    print('No')
# 1获取张三
info = {'name': '张三', 'age': 28, 'gender': '', 'hoppy': '打篮球'}
v = info['name']
print(v)
# 2请输出所有的键
for v2 in info.keys():
    print(v2)
# 3请输出所有的键和值
for a, b in info.items():
    print(a, b)
# 4请输出所有键和值,并让用户输入 name/age/gender/hoppy,根据用户输入输出对应的值
flag = input('请输入:name/age/gender/hoppy:')#'name'
print(flag,info[flag])#info['name']
# 5给你一个字典,请在空字典中添加数据:k1:1,k2:2,k3:3
dict_ = {}
dict_['k1'] = '1'
dict_['k2'] = 2
dict_['k3'] = 3
print(dict_)
# 6给你一个字典,请让用户输入:key,value,将输入的key和value添加到字典中
count = {}
key = input('请输入key:')
value = input('请输入value')
count[key] = value
print(count)
# 7给你一个字典,请让用户输入:key,value,将输入的key和value添加到字典中,直到用户输入N,则表示不再输入
count = {}
while True:
    key = input('请输入key:')
    if key.upper() == "N":
        break
    value = input('请输入value:')
    count[key] = value
    print(count)
# 8使用代码实现
'''c = "a1|s1,a2|s2,...." ==》d = {'a1'='s1','a2'='s2',}'''
d = {}
c = "a1|s1,a2|s2"
for item in c.split(','):
    print(item)
    a,s = item.split('|')
    print(a,s)
    d[a] = s
print(d)
# 9创建一个用户列表,然后用户输入用户名和密码进行登录
#构建用户列表:
user_lite = []
while True:
    z = input('请录入用户名:')
    if z.upper() == "N":
        print('退出录制')
        break
    x = input('请录入密码:')
    user_dict = {'user':z,'pwd':x}
    user_lite.append(user_dict)
    print(user_lite)
#用户输入用户名和密码进行登录
while True:
    nameuser = input('请输入用户名:')
    password = input('请输入密码:')
    message = '登录失败'
    for item in user_lite:
        if item['user'] ==nameuser and item['pwd'] == password:
            message = '登录成功'
            break
    print(message)

 

 2.集合

集合(set)是一个无序的不重复元素序列。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:

parame = {value01,value02,...}
或者
set(value)

独有功能

添加:add

a = {1,2}
a.add('aaa')
a.add('aaa')
print(a)

删除:discart

a.discard(2)
print(a)

批量添加:

a.update({11,22,33})
print(a)

交集、并集、差集

b = {9,8}
#交集
result = b.intersection({1,2,'aaa',22})#或使用([])格式
print(result)
#并集
result = b.union({'q','w','e'})#。。。
print(result)
#差集
result = b.difference({1,2,'aaa',22})#a集合中有且{1,2,'aaa',22}中没有的#。。。
print(result)
#对称差集
result = b.symmetric_difference({'q','w',9})
print(result)

 

posted @ 2020-03-24 22:00  Brilliance+  阅读(229)  评论(0)    收藏  举报