Python3 字典用法总结(一)

只愿长相守 提交于 2019-11-27 03:16:02

Python3 字典常用方法总结(一)

Python字典可存储任意类型对象,如字符串、数字、元组等,优点:取值方便,速度快

1. 创建字典

字典由键(key)和对应值(value)成对组成。字典也被称作关联数组或哈希表。基本语法如下:

dict = {'Name': 'Hacker', 'Believe': 'Free', 'Call': '996'}

注意:

  1. 每个键与值用冒号隔开(:),每对用逗号分割,整体放在花括号中({})。
  2. 字典的键必须是独一无二,但对应的值则不必。
  3. 字典的值可以取任何数据类型,但必须是不可变的,如字符串,数组或元组。

2. 访问字典中的值

print(dict['key'])   #直接通过建访问,如果写了不存在的值会报错

print(dict.get('key'))  #通过get()方法访问,如果写了不存在的值,返回None

print(dict.get('key','not find ')) #通过get()方法访问,如果找不到存在的值,返回 “not find”

print(dict.keys())  #获取所有的key值
print(dict.values()) #获取所有的value值
if  'key' in dict:   #判断key是否存在
    print('key')

for k,v in dict.items():   #遍历字典
    print(k,v) #无须转换成list 格式,保留了字典原有的特性

for k in dict:   #遍历字典
    print(k, dict[k])
    print(k, dict.get(k))   #取值速度快,性能好

3. 修改字典

dict['key'] = value  #key存在即修改,key不存在即新增
dict.setdefault('key',value)   #只能新增

4. 删除字典元素

dict.pop('key')  #必须要传值,因为字典是无序的
dict.popitem()  #随机删除一个
del dict['key'] #删除指定key
dict.clear()  #清空字典

5. 其他

print(dict.items())   #输出一个list格式(非真正意义上的list,实际是'dict_items' object,不可索引查询)
print(list(dict.items()))  #把字典的key 和 value 转成一个多维list
len(dict)  #计算字典元素个数,即键的总数。
str(dict)  #输出字典可打印的字符串。
type(variable)  #返回输入的变量类型,如果变量是字典就返回字典类型。

6. 字典的键必须初始化

如果访问一个字典中不存在的键,会导致一个keyerror,此时程序会由于运行时错误而崩溃。可以用“in ”检查成员关系,查看“Name”键是否在字典dict中。

if 'Name' in dict:
    print("true")
else :
    print("false")

用“not in ”替换 “in”,

if 'Name'  not in dict:
    dict['Name']  = "Hacker"  #初始化,如果需要
print(dict['Name'])

访问一个键之前,可以通过确保字典中的每个键都有一个关联值来避免keyerror。尽管这里in和not in 操作符可以提供帮助,不过更成熟的技术是使用setdault 方法。

setdault 方法

Python 字典 setdefault() 函数和 get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

setdefault() 方法的语法如下:

dict.setdefault(key, default=None)  #key-查找的键值,default-键不存在时,设置的默认键值。

返回值
如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。
实例

dict = {'Name': 'Hacker', 'Believe': 'Free'}
 
print ("Value : %s" , % dict.setdefault('Name', None))
print ("Value : %s",  % dict.setdefault('Call', '996'))

以上实例输出结果为:

Value : Hacker
Value : 996
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!