Python札记6_字典1

作者: 皮皮大 | 来源:发表于2019-06-16 20:00 被阅读0次

Python中存在一种叫做字典dictionary的对象类型,用dict表示,字典中的元素用{ }括起来,字典是无序的。字典中的元素由键值对组成,即key-value的形式。注意:字典中的键必须是不可变的数据类型,键可以是任意数据类型。字典具有如下的特点:

  • 在字典中,键是唯一的,不能重复;值对应于键,能够重复
  • 键值之间用英文冒号:隔开
  • 每一对键值对之间用英文逗号,隔开
  • 字典是可以进行原地修改
    元组不可变,可哈希hashable,能够做字典中的键;列表是可变的,不可哈希 unhashable,能够做字典中的值
  • 在字典中通过键直接得到值,比列表中从头开读取数据要快的多;检索快捷、高效、数据越大越明显

创建字典

# 创建字典
mydict = {}   # 创建空字典;空字典在实际编程中很有用处
print(mydict)
print(id(mydict))
mydict["name"] = "Peter"
print(id(mydict))     # 修改之后,内存中id不变,说明字典是原地修改的,可变的

person = {"name": "xiaoming", "age":18, "city": "shenzhen"}
print(person)

# 通过元组构建字典
name = (["python", "language"], ["shenzhen", "city"])
dic_tup = dict(name)
print(dic_tup)
name1 = dict(name="xiaoming", language="python", city="shenzhen")
print(name1)

# 通过fromkeys创建:只有当字典中的值相同时,才能使用该方法
website = {}.fromkeys(("first", "second"), "google")   # 所有值的键都是google
print(website)

# 结果:
{}
2543227937128
2543227937128
{'name': 'xiaoming', 'age': 18, 'city': 'shenzhen'}
{'python': 'language', 'shenzhen': 'city'}
{'name': 'xiaoming', 'language': 'python', 'city': 'shenzhen'}
{'first': 'google', 'second': 'google'}    # 使用fromkeys方法创建的字典中,值是相同的

访问字典的值

字典类型对象是通过键值对进行存储数据,只要知道键key,就可以访问该键的值value,本质上是一种映射关系

person = {"name": "xiaoming", "age":18, "city": "shenzhen"}
print(person["age"])       # 访问键age的值
person["sex"] = "male"    # 增加键值对
print(person)
person["age"] = 20    # 修改字典中某个键的值 
print(person)

# 结果
18
{'name': 'xiaoming', 'age': 18, 'city': 'shenzhen', 'sex': 'male'}
{'name': 'xiaoming', 'age': 20, 'city': 'shenzhen', 'sex': 'male'}    # age的值已经被修改成20 

字典基本操作

字典是可变的,能够对其中的元素进行操作,常用的基本操作有:

  • len(d):返回字典d中键值对的数量
  • d[key]:返回字典中键key的值
  • d[key]=value:将值value赋给字典中的键key
  • del d[key]:删除字典d中的键key
  • key in d:检查字典d中是否含有键为key的项
city = {'suzhou': '0512', 'beijing':'011', 'shanghai':'012', 'xiamen':'0592'}
print(len(city))    # 返回字典的长度

city['nanjing'] = '025'    # 添加一个键值对
print(city)

city['beijing'] = '010'    # 修改某个键值对
print(city)

del city['shanghai']    # 删除某个键值对
print(city)

# 结果
4
{'suzhou': '0512', 'beijing': '011', 'shanghai': '012', 'xiamen': '0592', 'nanjing': '025'}
{'suzhou': '0512', 'beijing': '010', 'shanghai': '012', 'xiamen': '0592', 'nanjing': '025'}
{'suzhou': '0512', 'beijing': '010', 'xiamen': '0592', 'nanjing': '025'}   # shanghai键值对已经删除

小插曲
格式化输出函数有两种情况:format(*args, **kwargs)

  • 前者表示字符串形式,*args
  • 后者表示字典形式,**kwargs

利用字典在format()函数中进行格式化输出

str = "My name is {name} and I am {age}".format(name='Peter', age=27)
print(str)   # 通过字符串来格式化输出

dict1 = {'name': 'Peter', 'age': 27}
print('My name is {name} and I am {age}'.format(**dict1))    # 通过字典来格式化输出

# 结果
My name is Peter and I am 27
city = {'suzhou': '0512', 'beijing':'011', 'shanghai':'012', 'xiamen':'0592'}
print("suzhou is a beautiful city, its area code is {suzhou} and the area code of shanghai is {shanghai}".format(**city))

# 结果
suzhou is a beautiful city, its area code is 0512 and the area code of shanghai is 012

相关文章

网友评论

    本文标题:Python札记6_字典1

    本文链接:https://www.haomeiwen.com/subject/biagfctx.html