43-字典类型内置方法

摘要:
目录字典类型内置方法1.字典类型内置的方法1.目的2.定义2.常用操作+内置方法2.1优先级2.1.1按键访问值:可以存储2.1.2长度len2.1.3成员操作in和notin 2.1.4删除del2.1.5键key(),values()键值对项()2.1.6周期2.2需要掌握2.2.1get()2.2.2update()2.2.3fromkeys()2.2.4setdefault()III练习1.计算单词数2.存储一个值或多个值3.有序或无序4.变量或不可变字典类型内置方法1.字典类型内置法1.存储多个值以备使用,但每个值都有与其对应的键。键具有描述值的功能。

目录
字典类型内置方法

一.字典类型内置方法

1.用途

存多个值,但每一个值都有一个key与之对应,key对值有描述功能。多用于存的值表示的是不同的状态时,例如存的值有姓名、年龄、身高、体重、爱好等。

2.定义

{}内用逗号隔开多个元素,每一根元素都是以key:value的形式,value可以是任意数据类型,而key通常应该是字符串类型,但是key必须为不可变类型。

name = {'name1':'lwx','name2':'hanye'}
print(name)

# {'name1': 'lwx', 'name2': 'hanye'}
name = dict(name1 = 'lwx',name2 = 'hanye')
print(f'name:{name}')

# name:{'name1': 'lwx', 'name2': 'hanye'}
name = {'name1': 'lwx', 'name2': 'hanye'}
print(f"name[name1]: {name['name1']}")

#name[name1]: lwx

二.常用操作+内置方法

常用操作和内置方法分为优先掌握(今天必须得记住)、需要掌握(一周内记住)两个部分

2.1优先掌握

2.1.1 按key存取值:可存可取

# dic之按key存取值
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f"name[name1]:{name['name1']}")

name['time'] = 'forever'
print(name)

# name[name1]:lwx
# {'name1': 'lwx', 'name2': 'hanye', 'time': 'forever'}

2.1.2 长度len

#dic之长度len
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f'len(name):{len(name)}')

# len(name):3

2.1.3 成员运算in和not in

# dic之成员运算in和not in
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f"'name1' in name:{'name1' in name}")
print(f"'lwx' in name:{'lwx' in name}")

# 'name1' in name:True
# 'lwx' in name:False

2.1.4 删除del

# dic之删除del
name = {'name1':'lwx','name2':'hanye','time':'all'}
del name['time']
print(name)
print(name.get('time'))

# {'name1': 'lwx', 'name2': 'hanye'}
# None     或得不到,返回None
 # dic之删除pop
name = {'name1':'lwx','name2':'hanye','time':'all','haha':'lala'}
name.pop('time')		# 指定元素删除
print(f"name.pop('haha'):{name.pop('haha')}")    #打印删除的key对应的值       
print(f"name.get('time'):{name.get('time')}")

# name.pop('haha'):lala
# name.get('time'):None
# dic之删除popitem()
# popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
name = {'name1':'lwx','name2':'hanye','time':'all','haha':'lala'}
print(f"name.popitem():{name.popitem()}")

# name.popitem():('haha', 'lala')

2.1.5 键keys()、值values()、键值对items()

# dic之键keys()、值values()、键值对items()的输出
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f"name.keys:{name.keys()}")
print(f"name.values():{name.values()}")
print(f"name.items():{name.items()}")

# name.keys:dict_keys(['name1', 'name2', 'time'])
# name.values():dict_values(['lwx', 'hanye', 'all'])
# name.items():dict_items([('name1', 'lwx'), ('name2', 'hanye'), ('time', 'all')])

2.1.6 循环

# dic之循环
# dic是无序的,但是python3采用了底层优化算法,所以看起来是有序的,但是python2中的字典是无序
name = {'name1':'lwx','name2':'hanye','time':'forever'}

for k,v in name.items():
    print(f'{k: <7} {v}')

# name1   lwx
# name2   hanye
# time    forever

2.2 需要掌握

2.2.1 get()

# dic之get()
name = {'name1':'lwx','name2':'hanye','time':'forever'}

print(f"name.get('name1'):{name.get('name1')}")
print(f"naem.get('hiahiahia'):{name.get('hiahiahia')}")

# name.get('name1'):lwx
# naem.get('hiahiahia'):None

2.2.2 update()

# dic之update()
name = {'name1':'lwx','name2':'hanye','time':'forever'}
name2= {'deep':'in heart'}
name.update(name2)
print(name)

# {'name1': 'lwx', 'name2': 'hanye', 'time': 'forever', 'deep': 'in heart'}

2.2.3 fromkeys()

dic = dict.fromkeys(['name','age','sex'],None)
print(f'dic:{dic}')

# dic:{'name': None, 'age': None, 'sex': None}

2.2.4 setdefault()

# 有指定key不会改变值;无指定key则改变值
dic = {'a': 1, 'b': 2}

print(f"dic.setdefault('a'): {dic.setdefault('a',3)}")
print(f"dic: {dic}")
print(f"dic.setdefault('c'): {dic.setdefault('c',3)}")
print(f"dic: {dic}")

# dic.setdefault('a'): 1
# dic: {'a': 1, 'b': 2}
# dic.setdefault('c'): 3
# dic: {'a': 1, 'b': 2, 'c': 3}

三.练习

1.统计单词的个数

统计s='hello tank tank say hello sb sb'中每个单词的个数

结果如:{'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}

s='hello tank tank say hello sb sb'

l = s.split()

dic ={}
for item in l:
    if item in dic:
        dic[item]+=1
    else:
        dic[item]=1
print(dic)

# {'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}

2.存一个值还是多个值

多个值,值可以使多个数据类型,key必须是不可变数据类型,通常是不可变数据类型中的字符串

3.有序或无序

无序

4.可变或不可变

dic = {'a': 1, 'b': 2}
print(f'first:{id(dic)}')
dic['a'] = 3
print(f'second:{id(dic)}')

# first:50821088
# second:50821088

免责声明:文章转载自《43-字典类型内置方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JS中的位置和宽度:clientWidth、offsetWidth、scrollWidth等区别前端必备的js知识点(转载)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

django-QueryDict

django-QueryDict 对象 在HttpRequest对象中,属性 GET 和 POST 得到的都是django.http.QueryDict所创建的实例。这是一个 django 自定义的类似字典的类,用来处理同一个键带多个值的情况。 在 python 原始的字典中,当一个键出现多个值的时候会发生冲突,只保留最后一个值。而在 HTML 表单中...

HashMap源码分析

final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { HashMap.Node<K,V>[] tab; HashMap.Node<K,V> p; int n, i; // 1.如果t...

JsonObject判断一个json串中是否含有某个key值

最近在做接口的调试工作,遇到将接收的XML信息转换成JsonObject后,取出某些key不存在的时候出现错误,所以对此方法做一个总结,这里为了方便就以json串来做演示。 import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject; public s...

3、zabbix配置入门

Zabbix模板zabbix组件:zabbix-serverzabbix-databasezabbix-webzabbix-agentzabbix-proxyzabbix逻辑组件:主机组、主机item(监控项)、appliction(应用)graph(图形)trigger(触发器)event(事件)actionnoticecommandmediauser...

Redis分布式锁/Redis的setnx命令如何设置key的失效时间(同时操作setnx和expire)

Redis的setnx命令是当key不存在时设置key,但setnx不能同时完成expire设置失效时长,不能保证setnx和expire的原子性。我们可以使用set命令完成setnx和expire的操作,并且这种操作是原子操作。下面是set命令的可选项:  从上面可以看出,多个命令放在同一个redis连接中并且redis是单线程的,因此上面的操作可以看...

django-QueryDict 对象

  在 HttpRequest 对象中,属性 GET 和 POST 得到的都是 django.http.QueryDict 所创建的实例。这是一个 django 自定义的类似字典的类,用来处理同一个键带多个值的情况。   在 python 原始的字典中,当一个键出现多个值的时候会发生冲突,只保留最后一个值。而在 HTML 表单中,通常会发生一个键有多个值...