一、字典
1、字典的生成
d = {} ##定义一个空字典
d1 = dict(name='xiaoming',age=18) ####赋值定义
字典批量赋值
users = [] ##定义一个空列表,来保存用户信息
for i in range(100): ##循环100次
users.append('user%d' %(i+1))
import pprint ##pprint模块,让输出更美观
pprint.pprint({}.fromkeys(users,'000000')) ##打印
2、字典支持的特性
字典不支持切片,索引,连接和重复
1、字典支持的特性有for循环
遍历key值
d = dict(a=1,b=2,c=3)
for i in d:
print(i) ##遍历字典里面的所有key值
遍历key—value值
d = dict(a=1,b=2,c=3)
for key in d:
print("%s ->%s" %(key,d[key])) ###key, value=d[key]
2、成员操作符
print('a' in d) ##查看key值a是否在d字典中
3、字典的增加
1、添加但个元素
d=dict(a=1,b=2)
# # 1. 增加一个元素;
# 1). 如果key值存在, 则更新对应的value值;
# 2). 如果key值不存在, 则添加对应的key-value值
# 如果key值不存在, 则增加key-value值;
d['e'] = 10
print(d)
# 如果key值存在, 则覆盖原有的value值;
d['a'] = 100
print(d)
- 添加多个key-value值;
# 1). 如果key值存在, 则更新对应的value值;
# 2). 如果key值不存在, 则添加对应的key-value值
d2 = {'c':10, 'a':200}
d.update(d2)
print(d)
3.setdefault添加key值;
# 1). 如果key值存在, 则不做修改;
# 2). 如果key值不存在, 则添加对应的key-value值
d.setdefault('f',100)
d.setdefault('a',300)
print(d)
4、字典的查看
1、print方法查看
d = dict(a=1,b=2)
print(d.get('a')) ##通过key 获取value值
print(d['a']) ##通过key值查看value值
print(d.keys()) ##查看字典中的所有key值
print(d.values()) ##查看字典中的所有value值
print(d.items()) ##遍历字典中的key—value值,并将其打包成元组
2、遍历key—value值的方式
for key,value in d.items():
print(key,'->',value)
3、查看key值是否存在
print('a' in d)
5、字典的删除
1、del删除
通过key值删除
service = {
"http":80,
'ftp':21,
'ssh':22,
'mysql':3306
}
del service['http']
print(service)
del service['nihao'] ##删除地点中没有的元素,则报错
print(service)
2、通过pop方式删除key值对应的key—value对
1). 如果key存在, 删除, 并且返回删除key对应的value值;
2). 如果key不存在, 直接报错
item = service.pop('http') ##返回值
print('删除http对应的value值:%s' %(item))
print(service)
3、popitem删除最后一个key-value值;
del_key_value_pair = service.popitem()
print('删除的ky—value对为:',del_key_value_pair)
print(service)
4、清空字典内容
service.clear()
print(service)
练习1、
重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
1. 用户输入一句英文句子;
2. 打印出每个单词及其重复的次数;
import pprint
s = input("请输入英文句子:")
words_list = s.split()
words_count_dict = {}
for word in words_list:
if word in words_count_dict:
words_count_dict[word] +=1
else:
words_count_dict[word] = 1
pprint.pprint(words_count_dict)
练习2、
IP重复统计:
1). 随机生成200个IP;
2). IP的范围172.25.254.1~172.25.254.200之间
3). 升序输出输出所有不同的IP及其每个IP重复的次数;
import random
from pprint import pprint
ip_list = []
for num in range(200):
ip = '172.25.254.'+str(random.randint(1,200))
ip_list.append(ip)
ip_count_dict = {}
for ip in ip_list:
if ip in ip_count_dict:
ip_count_dict[ip] += 1
else:
ip_count_dict[ip] = 1
pprint(ip_count_dict)
7、用python实现case语句
num1 = int(input('num1:'))
choice= input('操作:')
num2 = int(input("num2"))
d = {
'+':num1+num2,
'-':num1-num2,
'*':num1*num2,
'/':num1/num2,
}
print(d.get(choice,'ERROR!!'))
8、列表去重的第二种方式
l = ['a', 'b', 'a']
print({}.fromkeys(l).keys())
9、用户管理系统
userinfo = {
'root':'root',
'kiosk':'kiosk'
}
while True:
info = """
用户管理系统
1). 注册新用户
2). 用户登录()
3). 注销用户
4). 显示用户信息
5). 退出系统(exit(0))
请输入你的选择:"""
choice = input(info)
if choice == '1':
# 注册新用户: 用户是否已经存在?
print("注册新用户".center(50, '*'))
name = input("注册的用户名:")
if name in userinfo:
print("%s用户已经注册!" % (name))
else:
passwd = input("密码:")
userinfo[name] = passwd
print("%s用户注册成功!" % (name))
elif choice == '2':
print("用户登陆".center(50, '*'))
for trycount in range(3): # 0,1,2
name = input("用户名:")
passwd = input("密码:")
# 判断用户是否存在? # name in names
if name in userinfo:
# 判断该用户的密码是否正确?
if userinfo[name] == passwd:
print("登陆成功")
break
else:
print("用户%s密码错误" % (name))
else:
print("%s用户不存在" % (name))
else:
print("超过三次登陆机会")
elif choice == '3':
pass
elif choice == '4':
pass
elif choice == '5':
break
else:
print("Error:错误的选择!")