003字典基本操作

本文详细介绍了Python中字典的创建、基本操作,如通过key获取value,修改和删除元素,以及使用内置函数和方法如update、fromkeys、zip等。此外,还涵盖了字典推导式、合并多个字典和处理嵌套字典的方法。
摘要由CSDN通过智能技术生成

字典的基本用法

在 Python 中,字典是一种可以将相关的两个信息关联起来的操作,并且字典可存储的信息量几乎不受限制
字典是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据。为了保存具有映射关系的数据, Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来 访问,被称为 value。

创建字典

字典是以 key、value 的形式创建的
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中, 格式如下所示:
d = {key1 : value1, key2 : value2 }
一般情况下,字典的创建可以有以下几种方式:

#创建一个空的字典
my_dict1 = {}

#创建key值为整数的字典
my_dict2 = {1:'apple',2:'ball'}

#创建key值为string的字典
my_dict3 = {'name1':'apple','name2':'ball'}

#用dict()函数创建字典
my_dict5 = dict({1:'apple',2:'ball'})

#以元组的形式组成序列创建字典
my_dict6 = dict([(1,'apple'),(2,'ball')])

#创建空白字典
my_dict7 = dict()

获取字典中的元素

通过key获取value

my_dict8 = {'name':'John','age':25,1:[2,4,3]}

print(my_dict8['name'])
print(my_dict8.get('name'))


#结果
John
John

通过value来获取key

通过 value 来获取 key 值,在 Python 中并没有提供直接的方法,我们可以通过自定义函数来实现,如下:

def get_keys(d,value): #d为字典
    return [k for k,v in d.items() if v==value]
#调用函数
get_keys(my_dict8,'John')


#结果
['name']

在字典中修改或者添加元素

在字典中,可以修改已有 key 对应的 value 值,或者添加新的 key-value 键值对数据,如下:

#修改已有key对应的value的值
my_dict8['age']=98
print(my_dict8)

#结果
{'name': 'John', 'age': 98, 1: [2, 4, 3]}
#添加新的key-value数据组
my_dict8['gender']='man'
print(my_dict8)

#结果
{'name': 'John', 'age': 98, 1: [2, 4, 3], 'gender': 'man'}

从字典中删除元素

pop()方法

移除字典数据 pop() 方法的作用是:删除指定给定键所对应的值,返回这个值并从字典中把它移除。

#使用pop()方法删除
my_dict8.pop('age')
print(my_dict8)

#结果
{'name': 'John', 1: [2, 4, 3], 'gender': 'man'}

del方法

#使用del方法来删除
del my_dict8['name']

print(my_dict8)

#结果
{1: [2, 4, 3], 'gender': 'man'}

popitem()方法

在 Python 3.5 版本以及之前的时候,使用 popitem() 可能是随机删除的, 从 Python 3.7 版本开始,使用 popitem() 方法是删除最后一项,因为字典默认是记住了顺序的

#使用popitem()方法来删除
my_dict8.popitem()
print(my_dict8)

#结果
{1: [2, 4, 3]}

clear()方法

clear() 方法是用来清除字典中的所有数据,因为是原地操作,所以返回 None(也可以理解为没有返回值)

my_dict8 = {'name': 'John', 'age': 25 , 1: [2, 4, 3], 'gender': 'man'}

my_dict8.clear()
print(my_dict8)

#结果
{}

字典内置函数与方法

在这里插入图片描述

my_dict6 = dict([(1,'apple'),(2,'ball')])
my_dict8 = {'name':'John','age':25,1:[2,4,3],'gender':'man'}

print(len(my_dict8))  # 4
print(str(my_dict6))  # {1: 'apple', 2: 'ball'}
print(type(my_dict8))  # <class 'dict'>

在这里插入图片描述

my_dict8 = {'name':'John','age':25,1:[2,4,3],'gender':'man'}

print('copy:',my_dict8.copy())
#结果  copy: {'name': 'John', 'age': 25, 1: [2, 4, 3], 'gender': 'man'}

print("keys:",my_dict8.keys())
#结果  keys: dict_keys(['name', 'age', 1, 'gender'])

print("values:",my_dict8.values())
#结果  values: dict_values(['John', 25, [2, 4, 3], 'man'])

print("items:",my_dict8.items())
#结果  items: dict_items([('name', 'John'), ('age', 25), (1, [2, 4, 3]), ('gender', 'man')])

update方法

通过 update 方法,可以更新字典的数据内容:

my_dict6 = {'name':'Lemon','age':25,1:[2,4,3],'gender':'man'}
my_dict8 = {'name':'John','age':25,1:[2,4,3],'gender':'man'}

my_dict8.update(my_dict6)

print(my_dict8)
#结果  {'name': 'Lemon', 'age': 25, 1: [2, 4, 3], 'gender': 'man'}

fromkeys方法

seq = ['name','age','city']
value = ['Lemon',18,'cs']

my_dict9 = dict.fromkeys(seq,value)

print(my_dict9)
#结果  
{'name': ['Lemon', 18, 'cs'],
 'age': ['Lemon', 18, 'cs'],
 'city': ['Lemon', 18, 'cs']}

zip()方法

my_dict10 = dict(zip(seq,value))

print(my_dict10)
#结果  {'name': 'Lemon', 'age': 18, 'city': 'cs'}

setdefault方法

dict.setdefault(key, default=None)
该方法接收两个参数,第一个参数是健的名称,第二个参数是默认值。
假如字典中不存在给定的键,则把默认值赋值给对应的 value,并返回默认值
反之,不修改 value,只返回 value。

my_dict8 = {'name': 'John', 'age': 25 , 1: [2, 4, 3], 'gender': 'man'}

print("字典中存在的key,返回对应value:",my_dict8.setdefault('age',0))
print("字典中不存在的key,返回默认值:",my_dict8.setdefault('age1',0))

#结果
字典中存在的key,返回对应value: 25
字典中不存在的key,返回默认值: 0
#用setdefault()方法统计一个列表里单词出现的次数
strings = ("Lemon","kitten","Lemon","Lemon","Lemon_zs","Lemon","Lemon","Lemon_zs")

counts = {}
for kw in strings:
    counts[kw] = counts.setdefault(kw,0)+1
    
print(counts)
#结果
{'Lemon': 5, 'kitten': 1, 'Lemon_zs': 2}

字典推导式

一般式:
{key: value for (key, value)in iterable}

my_dict01 ={x: x*x for x in range(6)}

print(my_dict01)
#结果  {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
#通过两个list创建字典
keys = ['name','age','city']
values = ['Lemon',18,'cs']

my_dict02 = {k:v for (k,v) in zip(keys,values)}

print(my_dict02)
#结果
{'name': 'Lemon', 'age': 18, 'city': 'cs'}

字典合并

x={'a':1,'b':2}
y={'b':4,'c':5}

z1 = {**x, **y)
print(z1)
#结果
{'a': 1, 'b': 4, 'c': 5}

多个字典合并

def merge_dicts(*dict_args):
    result = {}
    for item in dict_args:
        result.update(item)
    return result

x1 = {'a':1,'b':2}
y1 = {'b':4,'c':5}
x2 = {'d':8,'e':10}

z3 = merge_dicts(x1,y1,x2)
print(z3)
#结果
{'a': 1, 'b': 4, 'c': 5, 'd': 8, 'e': 10}

嵌套型字典

字典是以 key、value 的形式创建的,而嵌套型的字典有一个特征,就是 key 对应的 value 值也可以是一个字典。 最简洁的嵌套型字典如下:

d = {key1:{key3:value3},key2:{key4:value4}}

创建嵌套型字典

nested_dict01 = {1:{'name':'Lemon','age':'18','city':'cs'},
                2:{'name':'Lemon_zs','age':'18','city':'changchun'}}
                
print(nested_dict01)
#结果
{1: {'name': 'Lemon', 'age': '18', 'city': 'cs'},
 2: {'name': 'Lemon_zs', 'age': '18', 'city': 'changchun'}}

从嵌套型字典中获取元素

print(nested_dict01[1]['name'])
print(nested_dict01[2]['city'])

#结果
Lemon
changchun

修改嵌套型字典的元素

#增加一个空的字典
nested_dict01[3] = {}
print(nested_dict01)
#结果
{1: {'name': 'Lemon', 'age': '18', 'city': 'cs'},
 2: {'name': 'Lemon_zs', 'age': '18', 'city': 'changchun'},
 3: {}}
#修改增加新的元素
nested_dict01[2]['age'] = '26'
print(nested_dict01)
#结果
{1: {'name': 'Lemon', 'age': '18', 'city': 'cs'},
 2: {'name': 'Lemon_zs', 'age': '26', 'city': 'changchun'},
 3: {}}
#增加新的元素
nested_dict01[3]['name'] = 'xsk'
print(nested_dict01)
#结果
{1: {'name': 'Lemon', 'age': '18', 'city': 'cs'},
 2: {'name': 'Lemon_zs', 'age': '26', 'city': 'changchun'},
 3: {'name': 'xsk'}}
#在嵌套型字典中直接添加一个字典
nested_dict01[5] = {'name':'rx','age':'3','city':'ly'}
print(nested_dict01)
#结果
{1: {'name': 'Lemon', 'age': '18', 'city': 'cs'},
 2: {'name': 'Lemon_zs', 'age': '26', 'city': 'changchun'},
 3: {'name': 'xsk'},
 5: {'name': 'rx', 'age': '3', 'city': 'ly'}}
#删除某个具体的元素内容
del nested_dict01[5]['city']
print(nested_dict01)
#结果
{1: {'name': 'Lemon', 'age': '18', 'city': 'cs'},
 2: {'name': 'Lemon_zs', 'age': '26', 'city': 'changchun'},
 3: {'name': 'xsk'},
 5: {'name': 'rx', 'age': '3'}}

通过for循环来获取嵌套字典内的元素

for main_id, main_info in nested_dict01.items():
    print('\nmain id:',main_id)
    
    for key in main_info:
        print(key+':',main_info[key])

#结果
main id: 1
name: Lemon
age: 18
city: cs

main id: 2
name: Lemon_zs
age: 26
city: changchun

main id: 3
name: xsk

main id: 5
name: rx
age: 3
  • 37
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值