[ python ] 字典的使用

数据类型划分:
    可变数据类型:list、dict、set    不可哈希
    不可变数据类型:tuple、bool、int、str    可哈希

 

字典

python内置了字典类型,使用键-值(key - value) 存储,具有极快的查找速度;

key:必须是 不可变数据类型
value:任意数据类型

dict 优点:
    二分查找效率快
    存储大量的关系型数据
    特点:字典是无序的

 

dict的增删改查

 

1. 增加

 (A) dic1['key'] = value     没有键值对,则添加;如果键,则值覆盖。

1
2
3
4
5
6
dic1 = {"name": "hkey", "age": 18, "sex": "male"}
dic1["heigh"] = 185
dic1['name'] = 'jay'
print(dic1)
# 执行结果:
# {'age': 18, 'sex': 'male', 'name': 'jay', 'heigh': 185}

 

(B) set_default()    有键值对,不做任何改变,没有才添加。

1
2
3
4
5
6
7
8
dic = {'name':'jay', 'age':18, 'sex': 'male'}
 
dic.setdefault('age', 20)       # 存在不修改,不报错
dic.setdefault('heigh', 180)    # 不存在修改。
print(dic)
 
# 执行结果:
# {'sex': 'male', 'heigh': 180, 'age': 18, 'name': 'jay'}

 

2. 删除

(A) pop(key, None)    删除键值对,并返回值。如果字典中没有删除的key,则返回 None

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dic = {'name':'jay', 'age':18, 'sex': 'male'}
t1 = dic.pop('name')    # 当 key 存在时,删除字典中的key-value并返回value值给 t1
print(t1)
print(dic)
 
# 执行结果:
# jay
# {'sex': 'male', 'age': 18}
 
 
dic = {'name':'jay', 'age':18, 'sex': 'male'}
t1 = dic.pop('name1111', None)    # 当 key 不存在时,则返回定义的第二个参数给 t1
print(t1)
# 执行结果:
# None

 

(B) popitem() 随机删除并返回删除元组,元组里面是删除的键值对

1
2
3
4
5
6
7
8
9
dic = {'name':'jay', 'age':18, 'sex': 'male'}
 
t1 = dic.popitem()  # 随机删除key-value 并作为元组返回给 t1
print(t1, type(t1))
print(dic)
 
# 执行结果:
# ('name', 'jay') <class 'tuple'>
# {'sex': 'male', 'age': 18}

 

(C) del 删除键值对或者整个字典

1
2
3
dic = {'name':'jay', 'age':18, 'sex': 'male'}
del dic['name'] # 删除字典中的键值对
del dic # 直接删除整个字典

 

 3. 修改

(A) update     合并两个字典

1
2
3
4
5
6
7
8
9
10
11
dic = {'name':'jay', 'age':18, 'sex': 'male'}
dic2 = {'name1':'hkey', 'age1': 20}
 
dic.update(dic2)    # 将dic2作为参数合并到dic中,dic变,dic2不变
 
print('dic:', dic)
print('dic2:', dic2)
 
# 执行结果:
# dic: {'age': 18, 'name': 'jay', 'sex': 'male', 'name1': 'hkey', 'age1': 20}
# dic2: {'age1': 20, 'name1': 'hkey'}

 

4. 查询

(A) dic.keys    字典key的组合,可以当成list类型来处理
(B) dic.values    字典value的组合,可以当成list类型来处理
(C) dic.items    字典(key, value)的组合,可以当做元组来处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
dic = {'name':'jay', 'age':18, 'sex': 'male'}
 
print(dic.keys())
print(dic.values())
print(dic.items())
 
# 执行结果:
# dict_keys(['age', 'sex', 'name'])
# dict_values([18, 'male', 'jay'])
# dict_items([('age', 18), ('sex', 'male'), ('name', 'jay')])
 
keys()、values()、items() 一般用for来遍历
 
for k in dic:   # 循环 key 值
    print(k)
 
for v in dic.values():  # 循环 value 值
    print(v)
 
for k, v in dic.items():    # 循环key, value 值
    print(k, v)

 

 (D) dic.get()    存在则返回 value值,不存在就返回预设值

1
2
3
4
5
6
7
dic = {'name':'jay', 'age':18, 'sex': 'male'}
print(dic.get('name'))
print(dic.get('name111', None))
 
# 执行结果:
# jay
# None

 

 

练习题:

s1 = 'asdf123sdfer45sdf3'
统计 s1 出现数字的次数,连续的数字算一个数字;

1
2
3
4
5
6
7
8
9
10
11
s1 = 'asdf123sdfer45sdf3'
 
for i in s1:    # 循环整个 s1 字符串
    if i.isalpha(): # 当单个字符串是字母的时候,就将字母替换成空格
        s1 = s1.replace(i, ' ')
 
li = s1.split() # 通过空格将字符串 s1 分隔成列表
print(len(li))  # 直接统计列表元素的个数
 
# 执行结果:
# 3

 

本文作者:hukey

本文链接:https://www.cnblogs.com/hukey/p/9621631.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   hukey  阅读(567)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 彩虹 Jay
彩虹 - Jay
00:00 / 00:00
An audio error has occurred.

彩虹 + 轨迹 (Live) - 周杰伦 (Jay Chou)

彩虹

词:周杰伦

曲:周杰伦

哪里有彩虹告诉我

哪里有彩虹告诉我

能不能把我的愿望还给我

能不能把我的愿望还给我

为什么天这么安静

为什么天这么安静

所有的云都跑到我这里

有没有口罩一个给我

有没有口罩一个给我

释怀说了太多就成真不了

释怀说了太多就成真不了

也许时间是一种解药

也许时间是一种解药

也是我现在正服下的毒药

也是我现在正服下的毒药

看不见你的笑 我怎么睡得着

看不见你的笑 我怎么睡得着

你的声音这么近我却抱不到

你的声音这么近我却抱不到

没有地球太阳还是会绕

没有地球太阳还是会绕

没有理由我也能自己走

没有理由我也能自己走

你要离开 我知道很简单

你要离开 我知道很简单

你说依赖 是我们的阻碍

你说依赖 是我们的阻碍

就算放开 但能不能别没收我的爱

就算放开 但能不能别没收我的爱

当作我最后才明白

当作我最后才明白

看不见你的笑 要我怎么睡得着

看不见你的笑 要我怎么睡得着

你的声音这么近我却抱不到

没有地球太阳还是会绕 会绕

没有理由我也能自己走掉

释怀说了太多就成真不了

也许时间是一种解药 解药

也是我现在正服下的毒药

轨迹

词:黄俊郎

曲:周杰伦

我会发着呆然后忘记你

接着紧紧闭上眼

想着哪一天 会有人代替

想着哪一天 会有人代替

让我不再想念你

我会发着呆 然后微微笑

我会发着呆 然后微微笑

接着紧紧闭上眼

又想了一遍 你温柔的脸

又想了一遍 你温柔的脸

在我忘记之前