python 基础数据类型-字典dict

如何定义字典

字典也是一种集合,同时也是无序的。

与集合相同,用{},与集合不同,dict是key value格式的。

一般字典的定义>>> type({"a":1,"b":2,"c":3})
<class ‘dict‘>定义一个空字典

>>> type({})
<class ‘dict‘>

字典的key 不能重复,相同的key 不同的value,后面的新value 覆盖前面的旧value

>>> {"a":1,"b":2,"c":3,"a":1}
{‘a‘: 1, ‘b‘: 2, ‘c‘: 3}
>>>
>>> {"a":1,"b":2,"c":3,"a":2}
{‘a‘: 2, ‘b‘: 2, ‘c‘: 3}
>>>
>>> {"a":1,"b":2,"c":3,"d":1}
{‘a‘: 1, ‘b‘: 2, ‘c‘: 3, ‘d‘: 1}

字典的key可以是str 也可以是 int 。但是key 必须是不可变的类型,比如int string ,tuple,但是list这种就是可变的类型(

1、可变不可变之后搞清楚

2、为啥tuple 是不可变的,list 是可变的呢?)

>>> {3:1,2:2,1:3,1:0.5}[3]
1

int 的key和string 的key 是2个key

>>> {3:1,2:2,1:3,"3":0.5}["3"]
0.5
>>> {3:1,2:2,1:3,"3":0.5}[3]
1
>>> {(1,3):1,2:2,1:3,"3":0.5}["3"]
0.5
>>> {[1,3]:1,2:2,1:3,"3":0.5}["3"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: ‘list‘

为啥tuple 是不可变的,list 是可变的呢?

如何去访问字典?不是序列,所以肯定也不能用切片,下标的方式访问,再说了,如果都可以用切片,下标访问的话,那字典的key 意义又何在?

用key 去访问字典>>> {"a":1,"b":2,"c":3,"a":0.5}["a"]
0.5访问不存在的,报出语法错误

>>> {"a":1,"b":2,"c":3,"a":0.5}["3"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: ‘3‘

相关推荐