【python】数据结构——字典
字典(dictionary),它是由一系列的键值对组合而成的数据结构 。
字典的索引可以使用不同数据类型,不只是整数。字典的索引被称为”键“,键及其关联的值被称为”键-值“对。
字典中的每个键与一个值相关联
- 键,必须是可 hash 的值,如字符串,数值等
- 值,可以是任意对象
1.创建字典
使用花括号 {}
创建字典。
>>> me = {'name':'axyzdong', 'age':'22'}
>>> me['name']
'axyzdong'
>>> 'My name is '+ me['name']
'My name is axyzdong'
将一个字典赋给 me 变量。这个字典的键值为 ’name‘,’age‘。这些键对应的值分别为 ’axyzdong‘ ,’22‘。可通过它们的键来访问这些值。
字典可以使用整数作为键。
>>> spam = {12345:'Luggage Combinaion', 42:'The Answer'}
>>> spam[42]
'The Answer'
2.字典与列表
与列表不同的是,字典中的表项是不排序的,也就是说字典中的’键-值‘对没有顺序之分。
>>> spam1 = ['a','b','c']
>>> spam2 = ['b','a','c']
>>> spam1 == spam2
False
>>> spam3 = {1:'a', 2:'b', 3:'c'}
>>> spam4 = {2:'b', 1:'a', 3:'c'}
>>> spam3 == spam4
True
>>>
3.增删改查
查看元素
>>> me = {'name':'axyzdong', 'age':'22'}
>>> me['name']
'axyzdong'
新增元素
>>> me = {}
>>> me['name']='axyzdong'
>>> me['age']='22'
>>> me
{'name': 'axyzdong', 'age': '22'}
修改元素
>>> me = {'name': 'axyzdong', 'age': '22'}
>>> me['age'] = '20'
>>> me
{'name': 'axyzdong', 'age': '20'}
删除元素
>>> spam = {1:'a', 2:'b', 3:'c'}
>>> spam.pop(1)
'a'
>>> spam
{2: 'b', 3: 'c'}
>>> del spam[2]
>>> spam
{3: 'c'}
4.重要方法
keys()
、values()
和items()
方法
它们返回类似列表的值,分别对应字典的键值、值和键-值对:keys()
、values()
和 items()
。返回的值不是真正的列表,不能被修改。但是这些数据类型(分别是dict_keys、dict_vslues和dict_items)可以用于for循环。
>>> me = {'name': 'axyzdong', 'age': '22'}
>>> for i in me.keys():
print(i)
name
age
>>> for j in me.values():
print(j)
axyzdong
22
>>> for k in me.items():
print(k)
('name', 'axyzdong')
('age', '22')
可以通过 list
函数将返回值转为真正的列表。
>>> me = {'name': 'axyzdong', 'age': '22'}
>>> list(me.keys())
['name', 'age']
>>> list(me.values())
['axyzdong', '22']
>>> list(me.items())
[('name', 'axyzdong'), ('age', '22')]
多重赋值技巧
>>> me = {'name': 'axyzdong', 'age': '22'}
>>> for i,j in me.items():
print('Key:' + i + ' Value:' + j)
Key:name Value:axyzdong
Key:age Value:22
- 检查字典中是否存在键、值或键-值对
>>> me = {'name': 'axyzdong', 'age': '22'}
>>> 'name' in me.keys()
True
>>> 'axyzdong' in me.values()
True
>>> ('name','axyzdong') in me.items()
True
get()
方法
get() 方法有两个参数,第一个参数:要取得其值的键;第二个参数:如果该键不存在时,返回的备用值。
>>> me = {'name': 'axyzdong', 'age': '22'}
>>> 'My name is ' + me.get('name', 'Li Hua')
'My name is axyzdong'
>>> 'My name is ' + me.get('fiend', 'Li Hua')
'My name is Li Hua' #当‘friend’键不存在时,返回备用值‘Li Hua’
setdefault()
方法
setdefault()
方法有两个参数,第一个参数:要检查的键;第二个参数:如果该键不存在时要设置的值。(如果该键存在,方法就会返回键的值)
me = {'name': 'axyzdong', 'age': '22'}
>>> me.setdefault('hobby','cycling')
'cycling'
>>> me
{'name': 'axyzdong', 'age': '22', 'hobby': 'cycling'}
>>> me.setdefault('name','Li Hua')
'axyzdong'
>>> me
{'name': 'axyzdong', 'age': '22', 'hobby': 'cycling'}
demo:计算输入字符串中每个字符出现的次数。
# -*- coding: utf-8 -*-
# @File : characterCount
# @Author : axyzdong
# @Time : 2021/11/25 21:28
# @Project : demo
message = str(input('message = '))
count = {}
for character in message:
count.setdefault(character, 0)
count[character] = count[character]+1
print(count)
交互式窗口输入 my name is axyzdong!
,得到每个字符出现的次数。
message = my name is axyzdong !
{' ': 5, 'm': 2, 'y': 2, 'n': 2, 'a': 2, 'e': 1, 'i': 1, 's': 1, 'x': 1, 'z': 1, 'd': 1, 'o': 1, 'g': 1, '!': 1}
pprint 模块实现漂亮打印
import pprint
message = str(input('message = '))
count = {}
for character in message:
count.setdefault(character, 0)
count[character] = count[character]+1
pprint.pprint(count)
交互式窗口输入 my name is axyzdong !
,运行结果如下:
message = my name is axyzdong !
{' ': 4,
'!': 1,
'a': 2,
'd': 1,
'e': 1,
'g': 1,
'i': 1,
'm': 2,
'n': 2,
'o': 1,
's': 1,
'x': 1,
'y': 2,
'z': 1}
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “收藏” “关注”
一键三连哦!
如果以上内容有任何错误或者不准确的地方,欢迎在下面 👇 留个言。或者你有更好的想法,欢迎一起交流学习~~~
- 点赞
- 收藏
- 关注作者
评论(0)