Python 字典

Posted faye9898

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 字典相关的知识,希望对你有一定的参考价值。

字典

数据类型的分类

  • 可变(不可哈希)的:list dict set
  • 不可变(可哈希)的:str bool int tuple

字典:

  • {}括起来,以键值对形式存储的容器型数据类型:
  • 键必须唯一,且是不可变的数据类型:str bool int tuple
  • 值可以是任意数据类型,对象
  • 查询速度非常快,以空间换时间。

1.字典的创建方式

#方法一:
d1 = dict((('地址','上海'),("年龄",20),(1,2019))) #看清楚这里有几层括号
print(d1)
{'地址': '上海', '年龄': 20, 1: 2019}
#方法二:
d2 = dict(地址 = "上海",年龄 = 20) #注意:键不加双引号
print(d2)
{'地址': '上海', '年龄': 20}
d3 = dict({'地址':"上海","年龄":20,1:2019})
print(d3)
d4 = {'地址':"上海","年龄":20,1:2019}
print(d4)
{'地址': '上海', '年龄': 20, 1: 2019}
{'地址': '上海', '年龄': 20, 1: 2019}

2.增

  • 直接增加 --有则改之,无则增加

  • setdefault --有则不变,无则增加

    #直接增加
    d = dict(name = "Faye",age = 20, hobby = "travel")
    d["sex"] = "女"
    print(d)
    d["name"] = "Python" #由于键是唯一的,如果有两个重复的键,后面的键会覆盖前面的
    print(d)
    {'name': 'Faye', 'age': 20, 'hobby': 'travel', 'sex': '女'}
    {'name': 'Python', 'age': 20, 'hobby': 'travel', 'sex': '女'}
    #setdefault
    d = dict(name = "Faye",age = 20)
    d.setdefault("hobby")
    print(d)
    d.setdefault("sex","女")
    print(d)
    d.setdefault("age",99) #如果字典里有,则不变
    print(d)

3.删

  • pop() --可设置第二个参数,那么无论字典中有无此键都不会报错(比较常用)

  • clear() --清空字典内容

  • del()

    d = dict(name = "Faye",age = 20, hobby = "travel")
    print(d.pop("name")) #删除并返回
    print(d.pop("name","没有此键")) #如果列表里没有要删除的元素,则返回“没有此键”
    Faye
    没有此键

4.改

  • 直接改

5.查

  • 按键查 --没有键的话会报错
  • get() --没有键会返回None,或者设置自己的话
  • 三个特殊的:keys() 、values() 、items()
#直接查
d = {"name":"Faye","age":20,"hobby":["旅游","健身","看电影"]}
print(d["hobby"])
#print(d["sex"]) #由于字典中没有这个键,所以会报错
['旅游', '健身', '看电影']
#get()方法查询
d = {"name":"Faye","age":20,"hobby":["旅游","健身","看电影"]}
print(d.get("hobby"))
print(d.get("sex"))  #查不到默认返回None
print(d.get("place","查不到哦~"))  #第二个参数可以设置查不到返回的字符
['旅游', '健身', '看电影']
None
查不到哦~
#keys() --查询所有的键
d = {"name":"Faye","age":20,"hobby":["旅游","健身","看电影"]}
a = d.keys()
print(a)
print(type(a)) #是一个特殊的类型
b = list(a) #但是可以转化成列表
print(b)
print("------------------")
for k in d.keys():
    print(k)
dict_keys(['name', 'age', 'hobby'])
<class 'dict_keys'>
['name', 'age', 'hobby']
------------------
name
age
hobby
#values() --查询所有的值
d = {"name":"Faye","age":20,"hobby":["旅游","健身","看电影"]}
a = d.values()
print(a)
print(type(a)) #是一个特殊的类型
b = list(a) #但是可以转化成列表
print(b)
print("------------------")
for v in d.values():
    print(v)
dict_values(['Faye', 20, ['旅游', '健身', '看电影']])
<class 'dict_values'>
['Faye', 20, ['旅游', '健身', '看电影']]
------------------
Faye
20
['旅游', '健身', '看电影']
#items()
d = {"name":"Faye","age":20,"hobby":["旅游","健身","看电影"]}
print(d.items())
print(list(d.items()))
print("----------一般这么用----------")
for i in d.items():
    print(i)
print("---------a是所有的键-----------")
for a,b in d.items():
    print(a)        
print("---------b是所有的值-----------")
for a,b in d.items():
    print(b)        
print("---------元祖的拆包-----------")
for a,b in d.items():
    print(a,b)   
dict_items([('name', 'Faye'), ('age', 20), ('hobby', ['旅游', '健身', '看电影'])])
[('name', 'Faye'), ('age', 20), ('hobby', ['旅游', '健身', '看电影'])]
----------一般这么用----------
('name', 'Faye')
('age', 20)
('hobby', ['旅游', '健身', '看电影'])
---------a是所有的键-----------
name
age
hobby
---------b是所有的值-----------
Faye
20
['旅游', '健身', '看电影']
---------元祖的拆包-----------
name Faye
age 20
hobby ['旅游', '健身', '看电影']
练习题
d = {"name":"Faye","age":20,"place":[{"国家":"中国","城市":"上海"}],"description":{"性格":"内向","优点":"无","缺点":"记性差"}}
#1.获取{"国家":"中国","城市":"上海"}这个字典

#2.获取所在国家

#3.获取缺点
答案
d = {"name":"Faye","age":20,"place":[{"国家":"中国","城市":"上海"}],"description":{"性格":"内向","优点":"无","缺点":"记性差"}}
#1.获取{"国家":"中国","城市":"上海"}这个字典
print(d["place"][0])
#2.获取所在国家
print(d["place"][0]["国家"])
#3.获取缺点
print(d["description"]["缺点"])
{'国家': '中国', '城市': '上海'}
中国
记性差

以上是关于Python 字典的主要内容,如果未能解决你的问题,请参考以下文章

Python snippet(代码片段)

Python代码阅读(第26篇):将列表映射成字典

Python代码阅读(第40篇):通过两个列表生成字典

Python代码阅读(第38篇):根据谓词函数和属性字符串构造判断函数

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段