字典是python里面唯一的映射类型,由一个个键值对组成。
- 字典的创建
- 字典的查询
- 字典的删除
- 字典的修改or添加
- 字典的内置方法(BIF)
- 字典的特性
- 通讯录练习
一、创建字典(two)
-
使用{}创建
-
使用dict()函数
demo
>>
>
dict1
=
{
'one'
:
1
,
'two'
:
2
,
'three'
:
3
}
>>
>
dict2
=
dict
(
one
=
1
,
two
=
2
,
three
=
3
)
>>
>
print
(
dict1
[
'one'
]
)
>>
>
print
(
dict2
[
"one"
]
)
1
1
上面的demo中需要注意的是 dict()方法创建字典的时候无需key无需加"",这个函数会自动给key加"" ,如果你加上它会报错。
二、查询字典
-
dict
访问整个字典,字典会无序的返回,因为字典重视的是key和value之间的对应关系,而非排序。 -
dict1[“key”]:
通过访问key,返回value,
print(dict[“one”]) -
dict1.get(“key”,“报错内容”):
如果字典中不存在某个key,而你访问的话会报错,这个时候使用get方法比较合适
如果存在key,会直接返回key对应的value,如果不存在返回你设置的报错内容。
demo
>>
>
dict2
=
dict
(
one
=
1
,
two
=
2
,
three
=
3
)
>>
>
print
(
dict2
)
{
'one'
:
1
,
'two'
:
2
,
'three'
:
3
}
##这是巧合,一般会返回无序的字典
>>
>
print
(
dict2
[
"one"
]
)
1
>>
>
print
(
dict2
.
get
(
"one"
,
"不存在"
)
)
#虽然get后面有报错内容,但键存在所以不会显示
1
>>
>
print
(
dict2
.
get
(
"five"
,
"不存在"
)
)
#five这个键不存在,所以会显示报错内容,给用户良好的交互感。
不存在
三、删除字典
-
del dict1:
删除整个字典 -
dict1.clear()
删除整个字典 -
del dict[“key”]
删除字典中的键-值对 - dict.pop(“key”)
四、修改or添加字典
dict[“key”] = value:
如果key存在,则修改value,如果key不存在,则添加value
demo
>>
>
dict2
=
dict
(
one
=
1
,
two
=
2
,
three
=
3
)
>>
>
dict2
[
"two"
]
=
22
>>
>
dict2
[
"four"
]
=
4
>>
>
print
(
dict2
)
{
'one'
:
1
,
'two'
:
22
,
'three'
:
3
,
'four'
:
4
}
五、字典的内置方法(BIF)
clear() #删除字典内所有元素
copy() #返回一个字典的浅复制
fromkeys() #初始化一个新字典
对象
,以序列seq中元素做字典的键,val为字典所有键对应的初始值
c
=
dict
.
fromkeys
(
[
7
,
8
,
9
]
,
"test"
)
print
(
c
)
get(key, default=None) #返回指定键的值,如果值不在字典中返回default值
has_key(key) #如果键在字典dict里返回true,否则返回false
items() #以列表返回可遍历的(键, 值) 元组数组
keys() #以列表返回一个字典所有的键
setdefault(key, default=None) #和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default
update(dict2) #把字典dict2的键/值对更新到dict里
values() #以列表返回字典中的所有值
六、key的特性
- 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
- 键必须不可变,所以可以用数,字符串或元组充当,所以用列表就不行
七、利用字典特性实现通讯录功能
tong
=
{
"one"
:
1
}
temp
=
print
(
"|---欢迎进入通讯录程序---|\n|---1:查询联系人资料---|\n|---2:插入新的联系人---|\n|---3:删除已有联系人---|\n|---4:退出通讯录程序---|"
)
while
True
:
instr
=
int
(
input
(
"请输入相关的指令代码:"
)
)
if
instr
==
2
:
contact
=
str
(
input
(
"请输入联系人姓名:"
)
)
if
contact
in
tong
:
instr1
=
str
(
input
(
"您输入的用户名已经存在-->>"
,
a
,
":"
,
tong
[
a
]
,
"\n是否修改用户资料(Yes/No):"
)
)
if
instr1
==
"Yes"
:
tel
=
int
(
input
(
"请输入用户联系方式:"
)
)
tong
[
contact
]
=
tel
else
:
tel
=
int
(
input
(
"请输入用户联系方式:"
)
)
tong
[
contact
]
=
tel
elif
instr
==
1
:
contact
=
str
(
input
(
"请输入联系人姓名:"
)
)
if
contact
in
tong
:
print
(
tong
[
contact
]
)
else
:
print
(
"通讯录中没有此人"
)
elif
instr
==
3
:
contact
=
str
(
input
(
"请输入联系人姓名:"
)
)
if
contact
in
tong
:
del
tong
[
contact
]
else
:
print
(
"通讯录中没有此人"
)
elif
instr
==
4
:
print
(
"|---感谢使用通讯录程序---|"
)
break