栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python基础必掌握的字典Dictionary使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python基础必掌握的字典Dictionary使用

学Python数据科学,玩游戏、学日语、搞编程一条龙。

整套学习自学教程中应用的数据都是《三国志》游戏中的内容。

Python中的字典由于是对象的集合属于复合数据类型,类似于列表。

字典有时在其他语言中被称为『关联记忆』或『关联数组』。字典由键索引,字符串和数字可以作为键,也可以是任何不可变类型。如果元组仅包含字符串、数字或元组,则元组可以用作键;如果元组直接或间接包含任何可变对象,则不能将其用作键,并且不能将列表用作键。


文章目录
  • 定义字典
  • 字典的访问
  • 字典键与列表索引
  • 增量构建字典
  • 字典键的限制
  • 字典值的限制
  • 运算符和内置函数
  • 内置字典方法

定义字典

字典是 Python 对数据结构的实现,通常称为关联数组。字典由『键、值』对的集合组成,每个『键、值』对将键映射到其关联的值。

通过将逗号分隔的『键、值』对列表括在大括号 ( {} ) 中来定义字典。冒号 ( : ) 将每个键与其关联的值分开。

d = {
    : ,
    : ,
      .
      .
      .
    : 
}

# 定义一个字典
monarch_dict = {
	'魏' : '曹操',
	'呉' : '孫権',
	'蜀' : '劉備',
	'晋' : '司馬懿',
	'他' : '董卓'
}

可以使用内置dict()函数构建字典。

d = dict([
    (, ),
    (, , )
])

# 定义一个Team
monarch_dict  = dict([
	('魏' , '曹操'),
	('呉' , '孫権'),
	('蜀' , '劉備'),
	('晋' , '司馬懿'),
	('他' , '董卓')
])

# 另一种定义方式
monarch_dict = dict(
	魏 = '曹操',
	呉 = '孫権',
	蜀 = '劉備',
	晋 = '司馬懿',
	他 = '董卓'
)

type(monarch_dict)


monarch_dict 
{'魏': '曹操', '呉': '孫権', '蜀': '劉備', '晋': '司馬懿', '他': '董卓'}

字典中的条目按定义的顺序显示,使用索引无法指定访问元素。

monarch_dict[1]

Traceback (most recent call last):
  File "", line 1, in 
KeyError: 1
字典的访问

通过在方括号[]中指定对应的键,从字典中检索值。

monarch_dict['魏']
'曹操'

monarch_dict['呉']
'孫権'

检索值不在字典中则抛出异常。

monarch_dict['漢']

Traceback (most recent call last):
  File "", line 1, in 
KeyError: '漢'

现有字典添加数据只需分配新的键和值。

monarch_dict['漢'] = '刘协'
monarch_dict
{'魏': '曹操', '呉': '孫権', '蜀': '劉備', '晋': '司馬懿', '他': '董卓', '漢': '刘协'}

更新数据,只需为现有键分配一个新值,并且字典内重复的键无法添加。

monarch_dict['晋'] = '司馬昭'
monarch_dict
{'魏': '曹操', '呉': '孫権', '蜀': '劉備', '晋': '司馬昭', '他': '董卓', '漢': '刘协'}

删除数据,使用 del 指定要删除的键。

del monarch_dict['漢']
monarch_dict
{'魏': '曹操', '呉': '孫権', '蜀': '劉備', '晋': '司馬昭', '他': '董卓'}
字典键与列表索引

数字作为键值使用。

d = {1: '曹操', 2: '孫権', 3: '劉備', 4: '司馬懿', 5: '董卓'}

d
{1: '曹操', 2: '孫権', 3: '劉備', 4: '司馬懿', 5: '董卓'}

d[2]
'孫権'

不能将字典视为列表。

type(d)


d[-1]
Traceback (most recent call last):
  File "", line 1, in 
KeyError: -1

d[0:2]
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unhashable type: 'slice'

d.append('e')
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'dict' object has no attribute 'append'
增量构建字典

创建新的空字典通过添加一个新的键和值构建新的字典。

person = {}
type(person)


person['名前'] = '諸葛亮(しょかつりょう)'
person['字'] = '孔明(こうめい)'
person['勢力'] = '蜀'
person['身長'] = '180cm'
person['交友関係'] = ['劉備', '月英', '姜維']
person['武器データ'] = {
	'下級': ['翼扇'], 
	'中級': ['白羽扇','緋煌扇','藍鋒扇'],
	'上級': ['碧龍翔扇'],
}

# 创建和访问字典
person
{'名前': '諸葛亮(しょかつりょう)', '字': '孔明(こうめい)', '勢力': '蜀', '身長': '180cm', '交友関係': ['劉備', '月英', '姜維'], '武器データ': {'下級': ['翼扇'], '中級': ['白羽扇', '緋煌扇', '藍鋒扇'], '上級': ['碧龍翔扇']}}

person['名前']
'諸葛亮(しょかつりょう)'

person['交友関係']
['劉備', '月英', '姜維']

# 检索字典数据
person['武器データ']['上級']
['碧龍翔扇']

构建的字典中数据类型没有明确的限制。

weapon = {
	'名前': '碧龍翔扇',
	'攻撃力': '144',
	'防御力': '480',
	'備考': '鍛冶屋で購入(30000)、開発',
	'is_used':True,
	True:'is_used'
}

weapon [True]
'is_used'
字典键的限制

任何类型的值都可以用作 Python 中的字典键。

weapon = {
	'碧龍翔扇': 'name',
	144: '攻撃力', 
	480: '防御力', 
	'鍛冶屋で購入(30000)、開発': '備考', 
	True: 'is_used', 
	'is_used': True
}

# 可以使用类型和函数等内置对象
d = {int: 1, float: 2, bool: 3,bin: 1, hex: 2, oct: 3}
d
{: 1, : 2, : 3, : 1, : 2, : 3}

元组也可以是字典键,因为元组是不可变的。

d = {(1, 1): '曹操', (2, 2): '孫権', (3, 3): '劉備'}
d
{(1, 1): '曹操', (2, 2): '孫権', (3, 3): '劉備'}
字典值的限制

字典的中的值是没有任何限制的。

d = {0: '三國無雙', 1: '三國無雙', 2: '三國無雙'}

d
{0: '三國無雙', 1: '三國無雙', 2: '三國無雙'}

d[0] == d[1] == d[2]
True
运算符和内置函数

in 和 not in 运算符。

monarch_dict = {
	'魏' : '曹操',
	'呉' : '孫権',
	'蜀' : '劉備',
	'晋' : '司馬懿',
	'他' : '董卓'
}

'魏' in monarch_dict
True

'漢' not in monarch_dict
True

短路评估一同使用。

monarch_dict['漢']
Traceback (most recent call last):
  File "", line 1, in 
KeyError: '漢'

'漢' in monarch_dict and monarch_dict['漢']
False
内置字典方法

与字符串和列表一样字典上也是有调用内置方法。

**.clear() **,清空字典数据。

d = {'魏': '曹操', '呉': '孫権', '蜀': '劉備'}

d.clear()
d
{}

.get([, ]),返回字典该键的值,若不存在为空也可以设定默认返回值。

d = {'魏': '曹操', '呉': '孫権', '蜀': '劉備'}

print(d.get('魏'))
'曹操'

print(d.get('漢'))
None

print(d.get('漢', -1))
-1

**.items() **,返回字典中的键值对列表。

d = {'魏': '曹操', '呉': '孫権', '蜀': '劉備'}

list(d.items())
[('魏','曹操'), ('呉','孫権'), ('蜀','劉備')]

list(d.items())[1][0]
'呉'

.keys(), 返回字典中的键列表。

d = {'魏': '曹操', '呉': '孫権', '蜀': '劉備'}

list(d.keys())
['魏', '呉', '蜀']

.values() ,返回字典中的值列表。

d = {'魏': '曹操', '呉': '孫権', '蜀': '劉備'}

list(d.values())
['曹操', '孫権', '劉備']

.pop([, ]) ,删除一个键,如果存在并返回它的值。若不存在引发异常,也可以默认默认值。

d = {'魏': '曹操', '呉': '孫権', '蜀': '劉備'}

d.pop('魏')
'曹操'

d
{'呉': '孫権', '蜀': '劉備'}

d = {'魏': '曹操', '呉': '孫権', '蜀': '劉備'}
d.pop('漢')
Traceback (most recent call last):
  File "", line 1, in 
KeyError: '漢'

d = {'魏': '曹操', '呉': '孫権', '蜀': '劉備'}

d.pop('漢', -1)
-1

d
{'魏': '曹操', '呉': '孫権', '蜀': '劉備'}

.popitem(), 从字典中删除键值对。

d = {'魏': '曹操', '呉': '孫権', '蜀': '劉備'}

d.popitem()
('蜀': '劉備')

d
{'魏': '曹操', '呉': '孫権'}

# d为空会引发异常
d = {}
d.popitem()
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 'popitem(): dictionary is empty'

.update(),将字典与另一个字典或可迭代的键值对合并。

# (被替换键值).update(替换键值)
d1 = {'魏': '曹操', '呉': '孫権', '蜀': '劉備','晋': '司馬懿'}
d2 = {'晋': '司馬昭', '他': '董卓'}
d1.update(d2)
d1
{'魏': '曹操', '呉': '孫権', '蜀': '劉備', '晋': '司馬昭', '他': '董卓'}

# 使用元组更新
d1 = {'魏': '曹操', '呉': '孫権', '蜀': '劉備','晋': '司馬懿'}
d1.update([('晋', '司馬昭'), ('他', '董卓')])
d1
{'魏': '曹操', '呉': '孫権', '蜀': '劉備', '晋': '司馬昭', '他': '董卓'}


# 指定关键字参数
d1 = {'魏': '曹操', '呉': '孫権', '蜀': '劉備','晋': '司馬懿'}
d1.update(晋='司馬昭', 他='董卓')
d1
{'魏': '曹操', '呉': '孫権', '蜀': '劉備', '晋': '司馬昭', '他': '董卓'}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840698.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号