目录

字典

字典的一般用法

字典的方法


字典

字典的一般用法

字典是一组用{}括起来的键值对,每个键值对用逗号分隔。

# 字典
info = {"Robin": "Baidu","Jack": ["Alibaba",20,{"B2C": "taobao.com","B2B": "1688.com","C2C": "2.taobao.com",}],"Pony": "Tencent",
}
print(info)

字典是无序的,因此不能用下标索引,也不能切片。只能通过键来索引值。

字典依靠键来索引,因此键必须是不可修改的。字符串、数字、元组能作为键。列表、字典等可以修改的类型不能作为键。

布尔值可以作为键,但不建议这么用。因为布尔值存储的是0和1,如果键里面也有数字0和1,布尔与数字0和1会混淆。为了避免这一混淆,布尔值不建议作为键。

info = {0: "zero",1: "one",2: "two","k1": "v1",# True: "testTrue", # 布尔值不建议作为键# False: "testFalse", # 布尔值不建议作为键(11, 22): "testTuple",# [11, 22]: "testList",  # 可修改的值不能作为键# {"kk1": "vv1"}: "testDict",  # 可修改的值不能作为键"k2": (11, 22, 33),"k3":[(),33,"mysql",{"kk1": "vv1","kk2": (999, 777),"kk3": "vv3",},],
}print(0, info[0])
print(1, info[1])
print(2, info[2])
print("k1", info["k1"])
print("tuple", info[(11, 22)])print(info["k3"][3]["kk2"][0])
# 999# 删
del info["k3"]
print(info)
# {0: 'zero', 1: 'one', 2: 'two', 'k1': 'v1', (11, 22): 'testTuple', 'k2': (11, 22, 33)}# 改
info["k2"] = 987
print(info)
# {0: 'zero', 1: 'one', 2: 'two', 'k1': 'v1', (11, 22): 'testTuple', 'k2': 987}# 增
info["k4"] = "vv"
print(info)
# {0: 'zero', 1: 'one', 2: 'two', 'k1': 'v1', (11, 22): 'testTuple', 'k2': 987, 'k4': 'vv'}

字典可以迭代,默认迭代的是键,也可以指定迭代键、值、键值对。

# 迭代,默认迭代键
for k in info:print(k)pass# 迭代,指定迭代键
for k in info.keys():print(k)pass# 迭代,指定迭代值
for v in info.values():print(v)pass# 迭代,指定迭代键值对
for k, v in info.items():print(k, v)pass

字典的方法

字典的clear、copy等方法就是字面意思,不再赘述。

字典的keys、values、items方法在迭代时使用,不再赘述。

dict方法,生成一个空的字典。

fromkeys方法是静态方法。用法是类名.方法名,和Java类似。用迭代器作为键的集合,生成一个字典。没有第二参数时,值都是空。有第二个参数时,值都是第二个参数。

d1 = dict()
# {}
print(d1)
d2 = dict.fromkeys("keys")
# {'k': None, 'e': None, 'y': None, 's': None}
print(d2)
d3 = dict.fromkeys([83, "k2", (13, 17)], "val")
print(d3)
# {83: 'val', 'k2': 'val', (13, 17): 'val'}

get方法。按键索引取值,如果键不存在会报错。用get方法可以避免这个问题。

用get方法,传入第一个参数键,不传第二个参数。如果键不存在,那么返回的值是None。

用get方法,传入第一个参数键,传入第二个参数默认值。如果键不存在,那么返回的值是默认值。

d4 = dict.fromkeys([83, "k2", (13, 17)], "val")
v = d4.get("k12345")
print(v)
# None
v = d4.get("k12345", 12345)
print(v)
# 12345
v = d4["k12345"]
# KeyError: 'k12345'

pop方法,删除键值对,并返回相应的值。

pop传入第一个参数键,不传第二个参数。如果键值对存在,那么字典会删除这个键值对,并返回相应值。如果键值对不存在,那么会报错。

pop传入第一个参数键,传入第二个参数默认值。如果键值对存在,那么字典会删除这个键值对,并返回相应值。如果键值对不存在,那么字典不便,返回默认值。

因此,pop的使用建议是,第二参数一定要传,没有默认值,那么就传入None。再对返回值做None判断

d5 = {"k1": "v1","k2": "v2","k3": "v3",
}
v = d5.pop("k1")
print(d5, v)
# {'k2': 'v2', 'k3': 'v3'} v1
v = d5.pop("k12345", 12345)
print(d5, v)
# {'k2': 'v2', 'k3': 'v3'} 12345

popitem方法。移除键值对,并将键值对以2元tuple的方式返回。返回的规则是LIFO(last-in, first out)。所以后添加的键值对被先移除。如果字典本身已经为空,那么会报错。

d6 = {"k1": "v1","k2": "v2","k4": "v4",
}
d6["k3"] = "v3"
k, v = d6.popitem()
print(d6, k, v)
# {'k1': 'v1', 'k2': 'v2', 'k4': 'v4'} k3 v3

setdefault方法。设置键值对。

如果键已经存在,那么不设置,将已有键对应的值返回。

如果键不存在,那么设置,并将设置的键值对的值返回。

d7 = {"k1": "v1","k2": "v2",
}
v = d7.setdefault("k1", "newv1")
print(d7, v)
# {'k1': 'v1', 'k2': 'v2'} v1
v = d7.setdefault("k9876", "v9876")
print(d7, v)
# {'k1': 'v1', 'k2': 'v2', 'k9876': 'v9876'} v9876

update方法。传入一个字典用来更新,如果键已经存在那么更新,如果键不存在那么新增。

d8 = {"k1": "v1","k2": "v2",
}
d = {"k1": "newv1","k3": "v3",
}
d8.update(d)
print(d8)
# {'k1': 'newv1', 'k2': 'v2', 'k3': 'v3'}

Python基础07-数据类型:字典dict相关推荐

  1. python基础知识三 字典-dict + 菜中菜

    3.7字典:dict+菜中菜 1.简介 ​ 无序,可修改,用于存储数据,大量,比列表快,将数据和数据之间关联 ​ 定义:dict1 = {'cx':10,'liwenhu':80,'zhangyu': ...

  2. python基础之数据类型III

    python基础之数据类型III 5.Dictionaries(字典) 5.1字典的认识 引子 我已经讲过的数据类型 int float str bool tuple list,我们讲的列表的数据类型 ...

  3. 1. Python基础之数据类型与注释

    文章目录 Python基础之数据类型与注释 1.变量 2.数据类型 2.1 Number类型 Int 整型 Float 浮点型 2.2 Bool 布尔类型 2.3 String 字符串类型 2.4 L ...

  4. python基础---元组、字典、函数、文件、异常

    文章目录 python基础---元组.字典.函数.文件.异常 Tuple(元组) 常用操作 dict(字典) 函数 文件 异常 python基础-元组.字典.函数.文件.异常 Tuple(元组) tu ...

  5. Python基础之数据类型II

    Python基础之数据类型II 3.List(列表) 引子 我们现在已经学过的基础数据类型: int float str bool,str类型可以帮我们存储少量的数据,但是str有什么缺点? str存 ...

  6. Python基础学习之字典操作

    Python基础学习之字典操作 文章目录 Python基础学习之字典操作 1. 字典的创建 1.1 直接赋值法 1.2 关键字赋值法 1.3 列表转化法 1.4 元素增加法 1.5 元组转化法 1.6 ...

  7. Python基础之数据类型(一)

    Python基础之数据类型(一) 一.数据类型种类 二.int类型 三.float类型 1.float介绍 2.float简单示例 三.bool类型 1.布尔值为true 2.布尔值为false 四. ...

  8. Python for循环遍历字典(dict)的方法

    本文主要Python中,Python2.x和Python3.x分别使用for循环遍历字典(dict)的方法,以及相关的示例代码. 原文地址:Python for循环遍历字典(dict)的方法

  9. 7.python基础之基础数据类型--字典dict

    1.字典: 字典是python中唯一 的映射类型,采用键值对(key-value)的形式存储数据. 字典是无序存储的.且key必须是可哈希的.可哈希表示key必须是不可变类型,如:数字.字符串.元组. ...

  10. 【python基础】——数据类型(列表、字典、集合)

    骏马金龙--python语法基础 python基础 变量与运算 符号 // % ** 意义 整除 整除取余 幂次方 数据种类 #mermaid-svg-7nSRRijcYFCYwTDr .label{ ...

最新文章

  1. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十八) 完美精灵之八面玲珑(WPF Only)②...
  2. 轨道阱 matlab,赛默飞四极杆-轨道阱液质联用仪核心参数详解
  3. 关于多边形内点数问题的一些变形
  4. android air创建文件夹,安卓版Airdrop将上线:无需安装APP,轻松实现文件隔空投送...
  5. 手写java数据库连接池,自定义实现数据库连接池,兼容springboot
  6. 2016蓝桥杯省赛---java---B---2(生日蜡烛)
  7. java学习(78):GUL拆分窗口
  8. android 实例源码解释,Android Handler 原理分析及实例代码
  9. 吴恩达深度学习 —— 2.8 计算图的导数计算
  10. EMC -- DFS篇(Documentum Foundation Services)
  11. oracle 负载均衡连接方式常用SQL语句备忘录
  12. mt7621芯片更换ram
  13. 8K HDR!|为 Chromium 实现 HEVC 硬解 - 原理/实测指南
  14. PHP 仍然是最流行的服务器端编程语言
  15. iOS 去除字符串中的H5标签。
  16. iOS苹果开发者账号(公司账号)申请流程详解
  17. 【冬季】寒冬已至,让这些公众号温暖你的冬天
  18. 3.29 判断电脑无线网卡是否支持5GHz频段
  19. 更换elasticsearch数据存储目录
  20. 螺旋矩阵---易懂系列

热门文章

  1. CentOS 安装FTP
  2. EMQ学习笔记---Clean Session和Retained Message
  3. 百度DisConf分布式配置框架源码试读(一)HttpClient 长连接
  4. Console-算法-冒泡排序法|倒水法
  5. 正确使用STL-MAP中Erase函数
  6. C++之typedef 小记
  7. UVa 374 - Big Mod
  8. Ubuntu 10.10 安装 libx11-dev
  9. C++资源之不完全导引(上)
  10. c# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值