Python中的字典一些小总结

字典定义语法:
{元素1, 元素2, … , 元素n}
其中每一个元素是一个“键值对”——键:值 (key:value)
大括号{} 把所有元素绑在一起
逗号, 将每个键值对一一分开
分号; 将键和值分开

创建字典的例子如下:

d = {
'A' : '1',
'B' : '2',
'C' : '3',
'D' : '4',
'E' : '5'
}
print( d, type(d) )

运行后

{'A': '1', 'B': '2', 'C': '3', 'D': '4', 'E': '5'} <class 'dict'>

内置方法
字典里最常用的三个内置方法就是keys(), values()和items(),分别是获取字典的键、值、对。

print(list(d.keys()), '\n')
print(list(d.values()), '\n')
print(list(d.items()))

运行后

['A', 'B', 'C', 'D', 'E'] 

['1', '2', '3', '4', '5'] 

[('A', '1'), ('B', '2'), ('C', '3'), ('D', '4'), ('E', '5')]

添加
比如加一个“F:6”

d['F'] = '6'

运行后

{'A': '1', 'B': '2', 'C': '3', 'D': '4', 'E': '5', 'F': '6'}

获取
两者都可以

print( d['B'] )
print( d.get('B') )

更新

d['C'] = '33'

运行后

{'A': '1', 'B': '2', 'C': '33', 'D': '4', 'E': '5'}

删除

del d['D']
# 或像列表里的 pop() 函数,删除行业 (industry) 并返回出来。
d.pop('D')

运行后

{'A': '1', 'B': '2', 'C': '3', 'E': '5'}

不可更改键
字典里的键是不可更改的,因此只有那些不可更改的数据类型才能当键,比如整数 (虽然怪怪的)、浮点数 (虽然怪怪的)、布尔 (虽然怪怪的)、字符、元组 (虽然怪怪的),而列表却不行,因为它可更改。看个例子

d = {
2 : 'integer key',
10.31 : 'float key',
True  : 'boolean key',
('OK',3) : 'tuple key'
}
print( d )

运行后

{2: 'integer key', 10.31: 'float key', True: 'boolean key', ('OK', 3): 'tuple key'}

虽然怪怪的,但这些 2, 10.31, True, (‘OK’, 3) 确实能当键。有个地方要注意下,True 其实和整数 1 是一样的,由于键不能重复,当你把 2 该成 1时,你会发现字典只会取其中一个键,示例如下:

d = {
1 : 'integer key',
10.31 : 'float key',
True : 'boolean key',
('OK',3) : 'tuple key'
}
print( d )

运行后

{1: 'boolean key', 10.31: 'float key', ('OK', 3): 'tuple key'}

那么如何快速判断一个数据类型 X 是不是可更改的呢?两种方法:

  1. 麻烦方法:用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id,如果不一样,则 X 不可更改,如果一样,则 X 可更改。
  2. 便捷方法:用 hash(X),只要不报错,证明 X 可被哈希,即不可更改,反过来不可被哈希,即可更改。
    先看用 id() 函数的在整数 i 和列表 l 上的运行结果:
i = 1
print( id(i) )
i = i + 2
print( id(i) )

运行后

1607630928
1607630992
l = [1, 2]
print( id(l) )
l.append('Python')
print( id(l) )

运行后

2022027856840
2022027856840
  • 整数 i 在加 1 之后的 id 和之前不一样,因此加完之后的这个 i (虽然名字没变),但是不是加前的那个 i 了,因此整数是不可更改的。
  • 列表 l 在附加 ‘Python’ 之后的 id 和之前一样,因此列表是可更改的。

先看用 hash() 函数的在字符 s,元组 t 和列表 l 上的运行结果:

hash('Name')

运行结果为:7230166658767143139

hash( (1,2,'Python') )

运行结果为:3642952815031607597

hash( [1,2,'Python'] )

运行结果为:TypeError: unhashable type: ‘list’

字符 s 和元组 t 都能被哈希,因此它们是不可更改的。列表 l 不能被哈希,因此它是可更改的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值