目录
创建字典
python 创建字典可以使用 dict 函数,或者使用花括号,用花括号的方式更为常见。
d = { \"a\": \"Athens\", \"b\": \"Belgrade\", \"c\": \"Cairo\" }
或者:
d = dict(a=\"Athens\", b=\"Belgrade\", c=\"Cairo\")
遍历
python 可以方便地遍历字典的 keys, values ,或者在遍历的时候获得 key 和 value。下面的代码演示了遍历的方式:
for item in d.items(): print(item)
这种方式,每一个 item 是一个 tuple,包括 key 和 value。
(\'a\', \'Athens\') (\'b\', \'Belgrade\') (\'c\', \'Cairo\')
也可以在遍历的时候通过两个变量得到 key 和 value:
for k, v in d.items(): print(k, v)
如果只关心 keys:
for k in d.keys(): print(k)
如果只关心 values:
for v in d.values(): print(v)
访问
使用 d[k] 的语法获得 key 为 k 的值,如果 key 不存在,抛出 KeyError。比如刚才的字典中 print(d[\"a\"])
得到 Athens,但如果是 d[“d”],因为并不存在 key 为 d 的项,所以抛出 KeyError:
d = dict(a=\"Athens\", b=\"Belgrade\", c=\"Cairo\") print(d[\"d\"])
运行代码,抛出异常如下:
Traceback (most recent call last): File \"d:/temporary/python dict demo/test.py\", line 4, in <module> print(d[\"d\"]) KeyError: \'d\'
如果想避免抛出异常,有两个方法:方法一是使用 get() 方法,没有对应的 Key 返回 None:
d = dict(a=\"Athens\", b=\"Belgrade\", c=\"Cairo\") print(d.get(\"d\"))
方法二是在使用前先通过 in 进行判断:
d = dict(a=\"Athens\", b=\"Belgrade\", c=\"Cairo\") if \"a\" in d: print(d[\"a\"])
修改
最简单的方法,通过 d[key] = value 方法修改,如果 key 不存在,则新建一个字典项:
d[\"a\"] = \"Atlanta\"
update() 方法可使用一个字典来更新已有的字典,如果被更新的字典中己包含对应的 key,那么原 value 会被覆盖;如果被更新的字典中不包含对应的 key,则该 key-value 对被添加进去。例如如下代码:
d = dict(a=\"Athens\", b=\"Belgrade\", c=\"Cairo\") d.update({ \"a\": \"Atlanta\", \"b\": \"Belgrade\", \"d\": \"Dehli\" }) print(d)
运行代码,a 被替换,b 保持不变,c 被保留,d 被增加:
{\'a\': \'Atlanta\', \'b\': \'Belgrade\', \'c\': \'Cairo\', \'d\': \'Dehli\'}
删除
- clear() 方法删除所有字典项
- del 删除字典项,如果 key 不存在,抛出 KeyError
- pop() 删除对应键值,如果 key 不存在,也抛出 KeyError,可以对不存在键的情况设置默认值
示例:
del d[\"a\"] print(d.pop(\"d\", \"none\")) # 返回 none而不是KeyError
setdefault() 方法
setdefault() 方法在 key 已经存在的时候返回对应的值,如果 key 不存在,则根据第二个参数 (default)增加 key-value pair,比如:
d.setdefault(\"a\", \"Atlanta\") # 因为a已经存在,返回Athens d.setdefault(\"d\", \"Dehli\") # 因为d不存在,将d设为Dehli
- dict 用法和知识点总结 3.7 版本后,dict 能保存 key 的位置,3.7之前 key 是无序的,关心 key 的位置可以使用 SortedDict 数据结构
- pop() / get() / setdefault() 三个方法可以设置 default 值,避免 KeyError
- 字典的 key 不可重复
暂无评论内容