python——字典

一、字典的定义

字典是另一种可变数据类型,可存储任意类型对象。
无序的序列,键值对的输入顺序和在内存中的存储顺序不一致
字典中的数据存储以键值对的方式
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中

定义一个空的字典:

s = {}
print(s,type(s))   输出字典的类型
{} <class 'dict'>      表示为一个新的字典

创建一个新的字典

>>> a = {'westos':'xian','name':'redhat','age':'11'}
>>> a
{'age': '11', 'westos': 'xian', 'name': 'redhat'}

使用工厂函数创建字典

>>> d = dict(name='koko',age='18',addr='xian')
>>> d
{'age': '18', 'addr': 'xian', 'name': 'koko'}

字典的嵌套

student = {
    '10010':{
        'name':'baba',
        'age':20,
        'score':100
    },
    '1100':{
        'name':'tuantuan',
        'age':22,
        'score':222
    }
}
print(student['10010']['name'])

效果展示

baba
二、字典的特性
1 通过键输出对应的值
d = {
    'a':'1',
    'b':'2'
}
print(d['a'])
2、成员操作符

判断指定的键是否时该字典中的键

in # 是该字典中的key则返回True,不是则返回False
not in #不是该字典中的key则返回True,是则返回False

d = {
    'a':'1',
    'b':'2'
}
print('a' in d)
print('a' not in d)

效果展示

True
False
3、for循环针对key

在使用for循环遍历字典的时候,遍历的是字典中的key。

d = {
    'a':'1',
    'b':'2'
}
for key in d:
    print(key)

效果展示

a 
b     输出所有的key值

遍历字典,输出字典的key 以及其对应的值

d = {
    'a':'1',
    'b':'2'
}
for key in d:
    print(key,d[key])

效果展示

a 1 
b 2    输出所有的健值对
三、字典元素的增加

格式 :dict[key] = value
如果key值存在,则更新对应的value值
如果key值不存在,则添加对应的key-value值

>>> a = {'https':'443','ssh':'22','dns':'53','http':'80'}
>>> a['ssh']=8080           因为原本的key值是已经存在了,所以是更新了value值
>>> a
{'dns': '53', 'http': '80', 'ssh': 8080, 'https': '443'}
>>> a['ftp']=23       原本的key值是不存在的,添加对应的key-value值
>>> a
{'ftp': 23, 'dns': '53', 'http': '80', 'ssh': 8080, 'https': '443'}

2 增加多个key值
dict1.update(dict2) # 将字典 dict2的所有元素添加到字典dict1中

>>> a = {'https':'443','ssh':'22','dns':'53','http':'80'}         原本字典中的元素
>>> b = {'gangben':'001','score':'99'}        定义一个新的字典
>>> a.update(b)             将新的字典全部加入到a字典中
>>> a
{'https': '443', 'http': '80', 'ssh': '22', 'dns': '53', 'score': '99', 'gangben': '001'}       输出全部的字典
>>> 

3 dict,setdefault(key,value)
如果key值存在:不做修改
如果key值不存在:则添加对应的key-value

service = {
    'http':'80',
    'ftp':'22',
    'ssh':'33'
}
service.setdefault('http',9090)
print(service)

效果展示

{'http': '80', 'ftp': '22', 'ssh': '33'}    value值未改变
四、字典元素的删除

pop删除指定key对应的value值,如果key存在,删除,并且返回删除key对应的value(可以用变量取接收),如果不存在,直接报错

>>> a = {'http':80 ,'ftp':21,'ssh':22, 'dns':99 }
>>> a
{'ftp': 21, 'http': 80, 'ssh': 22, 'dns': 99}
>>> a.pop()       如果是直接删除的话,没有指定key值或者key值不存在的话都是会出现报错的
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 arguments, got 0
>>> a.pop('dns')            删除指定的key值,value值也会被删除
99
>>> a
{'ftp': 21, 'http': 80, 'ssh': 22}
>>> b = a.pop('ssh')        接受被删除的key值      
>>> a
{'ftp': 21, 'http': 80}
>>>  b           查看是已经接受的了
22

2 dict.popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)

a  = {'http':80 ,'ftp':21,'ssh':22, 'dns':99 }
c = a.popitem()
print(c)
[root@localhost ~]# python ds.py 
('ftp', 21)     显示被删除的键值对

3.清空字典

>>> a = {'http':80 ,'ftp':21,'ssh':22, 'dns':99 }
>>> a
{'ftp': 21, 'http': 80, 'ssh': 22, 'dns': 99}
>>> a.clear()        
>>> a
{}          a的内容全部被删除
五、字典元素的查看

1、查看字典的key值,生成一个字典,然后查看key值
dict.keys() # 生成一个列表,列表中的元素为字典中的key

>>> a
{'ftp': 21, 'http': 80, 'ssh': 22, 'dns': 99}
> a.keys()         字典里边所有的key值
['ftp', 'http', 'ssh', 'dns']

2、查看字典的value值
dict.values() # 查看字典的value值,生成一个新的列表,元素为字典中的所有value

>>> a
{'ftp': 21, 'http': 80, 'ssh': 22, 'dns': 99}
>>> a.values()            字典里边的所有values值,
[21, 80, 22, 99]

3 查看字典的key-value值
dict.items() # 查看字典的键值对,生成一个新的列表,新列表的每一个元素都为一个元组,该元组中存放的是一个键值对。

>>> a
{'ftp': 21, 'http': 80, 'ssh': 22, 'dns': 99}
>>> a.items()
[('ftp', 21), ('http', 80), ('ssh', 22), ('dns', 99)]

4 查看key的value值
直接使用key查看其对应的值,但是当查看的key不属于该字典的时候出现报错

>>> a
{'ftp': 21, 'http': 80, 'ssh': 22, 'dns': 99}
>>> a['ftp']          
21              当key值存在的时候,查看的话会返回value值
>>> a['firewalld']               当key值不存在的时候,查看会出现报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'firewalld'

使用get()查看key的value值,当key存在的时候,返回对应的value值,当key不存在的时候,返回一个设定好的默认值或者None。

>>> a
{'ftp': 21, 'http': 80, 'ssh': 22, 'dns': 99}
>>> a.get('ftp')             key值存在的时候,查看是有value值返回的
21
>>> a.get('firewalld')       当key值不存在的时候,默认返回的是空
>>> a.get('firewalld',88)    key值不存在的时候,设定一个默认的值返回
88

练习

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

import random
a_num=[]
for i in range(1000):
    a_num.append(random.randint(20,100))
sorted_num = sorted(a_num)
dict_d = {}
for num in sorted_num:
    if num in dict_d:
        dict_d[num]+=1
    else:
        dict_d[num] = 1
print(dict_d)

重复的单词:
此处认为单词之间以空格为分隔符, 并且不包含,和.;
# 1. 用户输入一句英文句子;
# 2. 打印出每个单词及其重复的次数;

s = input('please input:')
d = s.split()
d_dict = {}
for i  in d:
    if i in d_dict:
        d_dict[i] +=1
    else:
        d_dict[i] = 1
print(d_dict)
please input:hello world
{'hello': 1, 'world': 1}
  1. 随机生成100个卡号;
    卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100),
  2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";
  3. 输出卡号和密码信息, 格式如下:
    卡号 密码
    6102009001 000000
card = []
for i in range(100):
    s = '6102009%.3d' %(i+1)
    card.append(s)
cards_dict = {}.fromkeys(card,'001')         #fromkeys的用法    用于创建并返回一个新的字典。两个参数:第一个是字典的键,第二个(可选)是传入键的值,默认为None。
print('cards\t\t\t\tpassword')
for key in cards_dict:
    print('%s\t\t\t\t%s' %(key,cards_dict[key]))
cards    password
6102009001    001
6102009002    001
6102009003    001
6102009004    001
...........实验效果太长不一一阐述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值