设为首页 加入收藏

TOP

10python字典(二)
2023-07-25 21:25:28 】 浏览:84
Tags:10python 字典
t; <h1> {title} </h1> <p> {text} </p> </body> </html> ''' data = {'title': 'My Home Page', 'text': 'Welcome to my home page!'} print(template.format_map(data)) # Output ''' <html> <head> <title> My Home Page </title> </head> <body> <h1> My Home Page </h1> <p> Welcome to my home page! </p> </body> </html> '''

字典方法

与其他内置类型一样,字典也有方法,字典的方法很有用,介绍几个常用的字典方法。

  • clear

方法clear删除所有字典项。

>>> 
>>> d = {}
>>> d['name'] = 'Gumby'
>>> d['age'] = 42
>>> d
{'name': 'Gumby', 'age': 42}
>>> returned_value = d.clear()
>>> d
{}
>>> print(returned_value) 
None
>>>
>>>  # 场景一:通过给x赋值空字典来“清空”x,但是不影响y。这种方法很有用。
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key': 'value'}
>>> x
{'key': 'value'}
>>> x = {}
>>> y
{'key': 'value'}
>>> x
{}
>>>
>>>  # 场景二:调用clear方法,会同时删除x、y中的元素。这种方法很有用
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key': 'value'}
>>> x
{'key': 'value'}
>>> x.clear()
>>> y
{}
>>> x
{}
>>>
  • copy

方法copy返回一个新字典,其包含的键值对与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件,而非副本)。

浅复制得到的副本,替换副本中的值,原件不受影响,但是修改副本中的值也会一并修改原件中的值,因为原件指向的也是被修改的值。

深复制就可以避免这种问题。

>>> 
>>> x = {'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y = x.copy()  # 浅复制
>>> y['username'] = 'mlh'
>>> y['machines'].remove('bar')
>>> y
{'username': 'mlh', 'machines': ['foo', 'baz']}
>>> x
{'username': 'admin', 'machines': ['foo', 'baz']} # 原件变化
>>>
>>>
>>> 
>>> from copy import deepcopy
>>> d = {}
>>> d['name'] = ['Alfred', 'Berthand']
>>> c = d.copy()
>>> dc = deepcopy(d) # 深复制
>>> d['name'].append('Clive')
>>> c
{'name': ['Alfred', 'Berthand', 'Clive']} # 原件不变
>>> dc
{'name': ['Alfred', 'Berthand']}
>>>
  • fromkeys

方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None。

# 从空字典创建另一个字典
d = {}
df = d.fromkeys(['name', 'age']) 
print(df) # {'name': None, 'age': None}

# 直接使用dict创建字典(dict是所有字典所属类型)
df = dict.fromkeys(['name', 'key'])
print(df) # {'name': None, 'age': None}

# 提供特定的值创建字典
df1 = dict.fromkeys(['name', 'age'], '(unknown)')
print(df1) # {'name': '(unknown)', 'age': '(unknown)'}
  • get

方法get为访问字典项提供了宽松的环境。因为通常访问字典中没有的项,将发生错误。

>>> 
>>> d = {}
>>> d['name'] # 通常访问报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'name'
>>>
>>> print(d.get('name')) # 通过get方法访问返回None
None
>>>
>>> d.get('name', 'N/A') # 指定默认值(如果有值就返回,没有就返回默认值)
'N/A'
>>>
>>> d['name'] = 'Eric'
>>> d 
{'name': 'Eric'}
>>> d.get('name')  # 访问的时候有值
'Eric'

使用get方法优化有的代码:

# 一个使用get()的简单的数据库,可以保证即使输入的值不对也能正常输出

# 将一个人名用作键的字典,每个人都用一个字典表示
# 字典中包含键'phone'和'addr',它们分别与电话号码和地址相关联

people = {
  'Alice': {
    'phone': '2341',
    'addr': 'Foo driver 23' 
  },
  
  'Beth': {
    'phone': '9102',
    'addr': 'Bar street
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python装饰器实例讲解(一) 下一篇Python基础之网络编程:7、网络并..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目