Python—字典

一、字典

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)
  1. 添加多个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:错误的选择!")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值