像列表一样,“字典”是许多值的集合。但不像列表的下标,字典的索引可以使用许多不同数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对。
字典中的表项是不排序的。所以不能像列表那样切片。
|
1
2
3
|
>>>
dict
=
{
'name'
:
'Tom'
,
'age'
:
18
,
'Color'
:
'white'
}
>>>
dict
[
'age'
]
18
|
keys()、values()和items()方法
▎3个字典的方法:
keys() 键
values() 值
items() 键-值对
这些方法返回的值不是真正的列表,它们不能被修改。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
>>>
dict
=
{
'name'
:
'Tom'
,
'age'
:
18
,
'Color'
:
'white'
}
>>>
for
k
in
dict
.keys():
...
print
(k)
...
Color
name
age
>>>
for
v
in
dict
.values():
...
print
(v)
...
white
Tom
18
>>>
for
k,v
in
dict
.items():
...
print
(k,v)
...
Color white
name Tom
age
18
|
in和not in
利用in和not in操作符可以检查值是否存在于列表中。
|
1
2
3
4
5
6
7
8
9
|
>>>
dict
=
{
'name'
:
'Tom'
,
'age'
:
18
,
'Color'
:
'white'
}
>>>
'age'
in
dict
.keys()
True
>>>
'age'
in
dict
## 等于“'age' in dict.keys()”
True
>>>
'Color'
not
in
dict
.keys()
False
>>>
'white'
in
dict
.values()
True
|
get()方法
在访问一个键的值之前,检查该键是否存在于字典中,可以使用get()方法,它有两个参数:要取得其值的键,以及如果该键不存在时,返回的备用值。
|
1
2
3
|
>>>
dict
=
{
'name'
:
'Tom'
,
'age'
:
18
,
'Color'
:
'white'
}
>>>
'My hair is '
+
str
(
dict
.get(
'hair'
,
'BLACK'
))
+
'.'
'My hair is BLACK.'
|
setdefault()方法
setdefault()方法为字典中某个键设置一个默认值,当该键没有任何值时使用它。
传递给setdefault()方法的第一个参数,是要检查的键。第二个参数,是如果该键不存在时要设置的值。如果该键确实存在,方法就会返回键的值。
|
1
2
3
4
5
6
7
|
>>>
dict
=
{
'name'
:
'Tom'
,
'age'
:
18
,
'Color'
:
'white'
}
>>>
dict
.setdefault(
'hair'
,
'black'
)
'black'
>>>
dict
.setdefault(
'age'
,
'20'
)
18
>>>
dict
{
'Color'
:
'white'
,
'name'
:
'Tom'
,
'age'
:
18
,
'hair'
:
'black'
}
|
漂亮打印
如果程序中导入pprint模块,就可以使用pprint()和pformat()函数,它们将漂亮打印一个字典的字。
如果字典本身包含嵌套的列表或字典,pprint.pprint()函数就特别有用。
如果希望得到漂亮打印的文本作为字符串,而不是显示在屏幕上,那就调用pprint.pformat()。
pprint.pprint(someDictValue) = print(pprint.pformat(someDictValue))
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
>>>
import
pprint
>>> text
=
'One night can change everything in your life.'
>>> count
=
{}
>>>
for
char
in
text:
... count.setdefault(char,
0
)
... count[char]
=
count[char]
+
1
...
>>> pprint.pprint(count)
{
' '
:
7
,
'.'
:
1
,
'O'
:
1
,
'a'
:
2
,
'c'
:
2
,
'e'
:
5
,
'f'
:
1
,
'g'
:
3
,
'h'
:
3
,
'i'
:
4
,
'l'
:
1
,
'n'
:
6
,
'o'
:
1
,
'r'
:
2
,
't'
:
2
,
'u'
:
1
,
'v'
:
1
,
'y'
:
2
}
|
本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/1947913
,如需转载请自行联系原作者