字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d
=
{
key1
:
value1
,
key2
:
value2
}
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
一个简单的实例:
dict
=
{
'WJ'
:
'female'
,
'CT'
:
'male'
}
这里主要说明一键一值和一键多值的情况。
一、 一键一值
- 访问字典中的值: dict[key] 返回key对应的值value
print
(
dict
[
'WJ'
]
)
# 代码结果
female
- 为字典增加一项: dict[key] = value
dict
[
'XXT'
]
=
'male'
print
(
dict
)
# 代码结果
{
'WJ'
:
'female'
,
'CT'
:
'male'
,
'XXT'
:
'male'
}
- 删除字典的一项: del dict[key] 或者 dict.pop[key]
del
dict
[
'WJ'
]
# 代码结果
{
'CT'
:
'male'
,
'XXT'
:
'male'
}
- 遍历字典
for
key
in
dict
:
print
(
key
+
':'
+
dict
[
key
]
)
# 代码结果
WJ
:
female
CT
:
male
XXT
:
male
- 判断一个键是否在字典中: in 或者 not in
'WJ'
in
dict
# True
'XXJ'
not
in
dict
# True
二、一键多值(defaultdict类)
- 这里按照append顺序设置下标,下标表示类似二维数组
from
collections
import
defaultdict
dict
=
defaultdict
(
list
)
# 这里如果希望消除重复元素(且不在意他们的顺序),就用集合。set
dict
=
defaultdict
(
list
)
dict
[
'WJ'
]
.
append
(
'female'
)
dict
[
'WJ'
]
.
append
(
22
)
dict
[
'CT'
]
.
append
(
'male'
)
print
(
dict
)
# 代码结果
defaultdict
(
<
class
'list'
>
,
{
'WJ'
:
[
'female'
,
22
]
,
'CT'
:
[
'male'
]
}
)
- 遍历字典
for
x
in
dict
:
print
(
x
+
':'
+
str
(
dict
[
x
]
)
)
# 代码结果
WJ
:
[
'female'
,
22
]
CT
:
[
'male'
]
-
访问多个值中的某个值:
这里类似数组下标的访问
print
(
dict
[
'WJ'
]
[
0
]
+
','
+
str
(
dict
[
'WJ'
]
[
1
]
)
)
# 代码结果
female
,
22
-
字典排序
排序我们使用sorted,如下:
sorted(L.items(), key=lambda x:x[0], reverse=True)
reverse=True 代表降序,默认为升序;lambda x:x[0] 是设置按照x[0]进行排序,x[0]表示key;x[1]表示value,在一键多值情况下需要使用类似二维数组的表示方法,举例如下:
from
collections
import
defaultdict
dict
=
defaultdict
(
list
)
dict
[
'WJ'
]
.
append
(
'female'
)
dict
[
'WJ'
]
.
append
(
22
)
dict
[
'CT'
]
.
append
(
'male'
)
dict
[
'CT'
]
.
append
(
23
)
print
(
dict
)
dict
=
sorted
(
dict
.
items
(
)
,
key
=
lambda
x
:
x
[
1
]
[
0
]
)
# 代表value的第一个值
print
(
dict
)
# 代码结果
排序前: defaultdict
(
<
class
'list'
>
,
{
'WJ'
:
[
'female'
,
22
]
,
'CT'
:
[
'male'
,
23
]
}
)
排序后:
[
(
'WJ'
,
[
'female'
,
22
]
)
,
(
'CT'
,
[
'male'
,
23
]
)
]
这里我们注意排序后的dict为一个tuple元组
下面用一个实际例子说明一键多值的用法: 见下面链接
https://blog.csdn.net/CT_WJ/article/details/95005180