python中字典的定义

1. 字典的定义
字典是一个无序的数据集合
通常输出顺序和定义顺序不一样

 
 
  • 1
  • 2
users = ['user1','user2']
passwds = ['123','456']

 
 
  • 1
  • 2
print(zip(users,passwds))
print(list(zip(users,passwds)))
print(dict(zip(users,passwds)))

 
 
  • 1
  • 2
  • 3

在使用zip来合并两个列表时,如果没有通过for循环来遍历列表,则打印出来的是合并的列表在内存中的位置
在这里插入图片描述

在这里插入图片描述
可以看到,将users和passwds两个列表合并成list类型
在这里插入图片描述

可以看到,将users和passwds两个列表合并成dict(字典)类型

d = {}   #用花括号定义一个空字典
# print(type(d))  #打印这个字典的类型,可以看到,d的类型是dict

 
 
  • 1
  • 2

在这里插入图片描述

字典中value值可以是任意数据类型
s = {
#     'westos':[100,99,88],  #字典中的value值是列表
#     'redhat':[50,60,70]
# }
# print(s,type(s))  #可以看到,s的数据类型是dict

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

工厂函数
# d = dict()   #使用工厂函数来定义一个字典
# print(d)  
# print(type(d))
# d = dict(a=1,b=2)
# print(d)
# print(type(d))

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
可以看到,使用工厂函数来定义一个字典,查看这个字典是一个空字典,其类型为dict
在这里插入图片描述
如果给工厂函数的括号中写上key-value,那么,打印这个字典能够看到存入的键值对

字典的嵌套
students = {
    '03113009':{
        'name':'wsp',
        'age':18,
        'score':90
    },
    '12345678':{
        'name':'laoli',
        'age':36,
        'score':80
    }
}
# print(students['12345678']['name'])

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述
可以看到,字典中还可以再嵌套字典,只需要通过键值就可以找到对应的value值

#所有的key的value值一样
print({}.fromkeys({'1','2'},'000000'))

 
 
  • 1
  • 2

在这里插入图片描述
可以看到,当需要给所有的key以统一的value值,可以使用fromkeys,例如:银行在给新卡设置统一的初始密码时可以使用这种方法

2. 字典的特性
不支持索引 切片
# print(d[0])

 
 
  • 1
  • 2

在这里插入图片描述
可以看到,当使用索引值来查看字典的内容时,会报错:数据集不支持下标索引

字典的重复 连接无意义,因为字典的key值唯一

 
 
  • 1
成员操作符
# print('a' in d)
# print('a' not in d)

 
 
  • 1
  • 2
  • 3

在这里插入图片描述可以看到,字符a在字典中返回True,字符a不在字典中返回False

for循环
for k in d:
    print(k,d[k])

 
 
  • 1
  • 2
  • 3

在这里插入图片描述
遍历字典中的key,输出key值和对应的value值

services = {
    'http':80,
    'ftp':21,
    'mysql':3306
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
3. 字典的增加
3.1 字典键值对的添加
如果key值存在,则更新对应的value值
如果key值不存在,添加key-value值对

 
 
  • 1
  • 2
services['ssh'] = 22
 print(services)
 services['http'] = 443
 print(services)

 
 
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
可以看到,成功添加键值对‘ssh-22‘
在这里插入图片描述
可以看到,将http的value(80)改为443

3.2 添加多个key-value值
services_backup = {
    'https':443,
    'tomcat':8080,
    'ssh':22
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
services.update(services_backup)
# print(services)
# services.update(flask=9000,http=8000)
# print(services)

 
 
  • 1
  • 2
  • 3
  • 4
  • 5

定义另一个字典,将新定义的字典添加在services字典中(添加多个键值对)
在这里插入图片描述
在services字典中直接添加多个键值对

在这里插入图片描述

3.3 setdefault添加key值
如果key值存在,不做修改
如果key值不存在,添加对应的key-value

 
 
  • 1
  • 2
services.setdefault('http',9090)
print(services)
services.setdefault('oracle',44575)
print(services)

 
 
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
key值存在,不做修改
key值不存在,添加key-value键值对
在这里插入图片描述

4. 字典的删除
4.1 del
services = {
    'http':80,
    'ftp':21,
    'mysql':3306
}
del services['http']
print(services)

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述
删除指定的key-value

4.2 pop:删除指定的key的key-value
如果key存在,删除,并返回删除key对应的value
#如果key不存在,报错

 
 
  • 1
  • 2
item = services.pop('mysql')
print(item)
print(services)

 
 
  • 1
  • 2
  • 3

在这里插入图片描述
删除了mysql的键值对并返回值

4.3 popitem:删除最后一个key-value值
item = services.popitem()
 print(item)
 print(services)

 
 
  • 1
  • 2
  • 3

在这里插入图片描述
删除了最后一个键值对

4.3 clear :清空字典内容
services.clear()
print(services);

 
 
  • 1
  • 2

在这里插入图片描述
可以看到,字典内容被清空

5. 字典的查看

查看字典的key值

print(services.keys())

 
 
  • 1

在这里插入图片描述
可以看到字典的key值
查看字典的value值

print(services.values())

 
 
  • 1

在这里插入图片描述
可以看到字典的value值
查看字典的key-value值对

print(services.items())

 
 
  • 1

在这里插入图片描述
查看key的value值

print(services['http'])

 
 
  • 1

在这里插入图片描述
可以看到,http的value值为80

查看key的value值

key不存在,默认返回None
key不存在,有default,则返回default

 
 
  • 1
  • 2
print(services.get('http'))  #key存在,返回key的value
print(services.get('https'))  #key不存在,返回None

 
 
  • 1
  • 2

在这里插入图片描述

get方法获取指定key值对应的value值
如果key值存在,返回对应的value值
如果key值不存在,默认返回None,如果需要指定返回值,传值即可

 
 
  • 1
  • 2
  • 3
print(services.get('https','key not exist'))

 
 
  • 1

在这里插入图片描述
可以看到,不存在就返回指定的返回值‘key not exit’

6. 字典的示例

1.数字统计:
1)随机生成1000个整数
2)范围[20,100]
3)升序输出所有不同的数字及每个数字重复的次数

import random
nums = []
for i in range(1000):
    nums.append(random.randint(20,100))
#排序并添加到字典中
sorted_nums = sorted(nums)
num_dict = {}
for num in sorted_nums:
    if num in num_dict:
        num_dict[num] += 1
    else:
        num_dict[num] = 1
print(num_dict)

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

  1. 生成100个卡号;
    卡号以6102009开头, 后面3位依次是(001, 002, 003, 100)
  2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";
  3. 输出卡号和密码信息, 格式如下:
    卡号 密码
    6102009001 000000
card_num = []
for i in range(100):
    card_num.append('6102009%.3d' %(i+1))
card_info = {}.fromkeys(card_num,'redhat')
print('卡号\t\t\t 密码')
for k,v in card_info.items():
    print(k,'\t',v)

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值