首页 > 其他分享 >数据类型之字典类型

数据类型之字典类型

时间:2022-12-01 12:44:29浏览次数:38  
标签:27 name age 数据类型 print dict 类型 data 字典

数据类型之字典类型

数据类型之字典类型

[scode type="green" size=""]dict 字典类型[/scode]

  字典是有序、键不重复且元素只能是键值对的可变****的数据容器。在Python中用 ​dict表示。

  注意:在Python3.6之前字典是无序的,之后就是有序的了。

一、定义

  1. 字典是包含0个或多个键值对元素组成的有序字典。
  2. 字典可以对元素进行增加、删除、替换、查找等操作。
  3. 字典没有长度的限制,但键必须是可哈希。
  4. 字典用 {k:v}​ 表示,也可以通过 dict()​ 函数创建空字典或将一对的集合或字符串类型转换为字典类型。

  注意:字典的键不能重复,重复则会被覆盖

# 创建字典方式一
data = {"uesr":"pwd","uesr","123"}
print(data)   # {"uesr","123"}

# 创建字典方式二
v1 = {}  # 空字典
v2 = dict()

  当我们想要表示一组固定的信息时,用字典更加直观。

# 用户列表
user_list = [{"name":"lishi","pwd","123"},{"name":"zhangsan","pwd","1230"}]

二、字典类型的操作

data = {"name":"张三","age":27}
v1 = data.get("name")

print(v1)
# 张三

v2 = data.get("age")
print(v2)


v3 = data.get("emall")
print(v3)
# None  当没有键时,默认返回None

if v3:
    print(v3)
else:
    print("没有这个键")
# 没有这个键

v4 = data.get("boyy",123)
print(v1)  # 存在键名就返回键名,不存在就返回后面的值。

  输出的是一个高仿的列表,这个高仿的列表可以被循环。也可以判断是否存在。

data_dict = {"name":"张三","age":27}
data = data_dict.keys()
print(data)  # dict_keys(['name', 'age']) 
# 输出的是一个高仿的列表,这个高仿的列表可以被循环。也可以判断是否存在。

for ele in data:
    print(ele)
#  name
#  age

if "name" in data:
    print("name这个键存在")
#  name这个键存在

  输出的也是高仿的列表。

data_dict = {"name":"张三","age":27}
data = data_dict .values()
print(data)  # dict_values(['张三', 27])
# 获取所有的值,也是一个高仿的列表。

  输出的也是高仿的列表,里面存放的是元组类型。

data_dict = {"name":"张三","age":27}
data = data_dict.items()
print(data)  # dict_items([('name', '张三'), ('age', 27)])
# 也是高仿的列表,里面是元组。

for item in data:
    print(item)  # 输出的是元组
    # ('name', '张三')
    # ('age', 27)
    print(item[0],item[1])  
    # name 张三
    # age 27
-------------------------------------------
for key,value in data:
    print(key,value)  # 将键值从元组里取出来,输出的是字符串
    # name 张三
    # age 27

  字典里面有的键值对不做改变,没有就添加进去。

data_dict = {"name":"张三","age":27}
data_dict.setdefault("emall",123456)
print(data_dict )  # {'name': '张三', 'age': 27, 'emall': 123456}

# 如有添加的键则不做改变。
data_dict.setdefault("name","李四")
print(data_dict )  # {'name': '张三', 'age': 27, 'emall': 123456}

  字典里面有的键值对就改变值,没有就添加进去。

data_dict = {"name":"张三","age":27}
data_dict.update({'name': '李四', 'age': 29, 'emall': 444593})
print(data_dict)  # {'name': '李四', 'age': 29, 'emall': 444593}

  移除的值可以赋值给一个变量

data_dict = {"name":"张三","age":27}
data = data_dict.pop("age")  #  没有 键 则会报错
print(data_dict)  # {'name': '张三'}
print(data)  

data_dict = {"name":"张三","age":27}
data = data_dict.popitem()
print(data_dict)  # {'age': 27}
print(data)  # ('name', '张三')

data = data_dict.popitem()
print(data_dict)  #  {}
print(data)  #  ('age', 27)

  注意:Python3.6之前popitem是随机移除,Python3.6之后popitem改为移除第一个键值对。

  如果多个字典中有相同的键,则取最后的字典的值。

v1 = {"k1":1,"k2":2}
v2 = {"k2":33,"k3":10}

v3 = v1|v2
print(v3)  # 输出: {'k1': 1, 'k2': 33, 'k3': 10}

data_dict = {"name":"张三","age":27}
data = len(data_dict)
print(data)  

  字典不同于元组和列表,字典的索引是 ​

  • 获取值,没有键就会报错
data_dict = {"name":"张三","age":27}
print(data_dict["name"])  # 张三
print(data_dict["age"])   
print(data_dict["xxx"])   # 报错,没有这个键
  • 增加值,没有键就会增加
data_dict = {"name":"张三","age":27}
data_dict["gender"] = "男"
print(data_dict)  # {'name': '张三', 'age': 27, 'gender': '男'}
  • 修改值,有键就会更改原来的键值
data_dict = {"name":"张三","age":27}
data_dict["name"] = "李四"
print(data_dict)  # {'name': '李四', 'age': 27}
  • 删除值,没有键就会报错
data_dict = {"name":"张俊","age":27}
del data_dict["name"]
print(dict)  # {"age":27}

  注意:字典尽量使用get取值,get取值没有 键 不会报错。

data_dict = {"name":"张三","age":27}
for data in data_dict:
    print(data)  # 默认循环的是 键
    # name
    # age

  元素必须一对一对的才能转换

v = dict(("k1","v1"))
print(v)
# {'k': '1', 'v': '1'}

v = dict(["k1","v1"])
print(v)
# {'k': '1', 'v': '1'}

v = dict([("k1","v1"),("k2","v2")])
print(v)
# {'k1': 'v1', 'k2': 'v2'}

v = dict([["k1","v1"],["k2","v2"]])
print(v)
# {'k1': 'v1', 'k2': 'v2'}

v = dict((["k1","v1"],["k2","v2"]))
print(v)
# {'k1': 'v1', 'k2': 'v2'}

v = dict((("k1","v1"),("k2","v2")))
print(v)
# {'k1': 'v1', 'k2': 'v2'}

  • 字典的键必须可哈希
  • 字典的值可以是任意类型
data = {"name":"张三","age":27,"hobby":['足球','篮球']}
print(data)

data = {"name":"张三","age":27,"hobby":('足球','篮球')}
print(data)

data = {"name":"张三","age":27,"hobby":['足球','篮球']}
print(data)

data = {"name":"张三","age":27,"hobby":{
    'motion':['足球','篮球'],
    'video':['白日焰火','猫和老鼠'],
  
}}
print(data)

15、其他

  因为底层存储原理,字典只是对键进行哈希值比较,所以根据 键 查找 值,查找效率非常高(只有数据量大了才明显)。

  ‍

标签:27,name,age,数据类型,print,dict,类型,data,字典
From: https://www.cnblogs.com/tangyouwei/p/data-type-dictionary-type-z26jjrh.html

相关文章

  • Solidity数据类型
    Solidity是一种静态类型语言,这意味着每个变量(状态变量和局部变量)都需要在编译时指定变量的类型。Solidity提供了几种基本类型,并且基本类型可以用来组合出复杂类型。除此之......
  • JavaScript中的Error错误对象与自定义错误类型
    ErrorError是JavaScript语言中的一个标准的内置对象,专门用于处理JS开发中的运行时错误。当我们的JS代码在运行过程中发生错误的话,就会抛出Error对象,整个程序将会中断在错......
  • Python中的六种基本数据类型
    Python中分为六种基本数据类型不可变类型(又叫静态数据类型,没有增删改操作):数字(number)、字符串(string)、元组(tuple)可变类型(又叫动态数据类型,支持增删改操作):列表(list......
  • 常见DP类型
    常见DP类型第一节:线性DP思想:DP是作用在线性空间上的递推——DP的阶段按照各个维度线性的增长,从一个或多个边界点开始有方向的向整个状态空间转移扩展,最后在每个状态上保......
  • L3-07. table类型
    一.基本知识1. table是Lua的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。2. Lua的table数据类型,可以用任意类型来作数组的索引,但这个值不能......
  • intptr_t和uintptr_t类型
    看代码看到intptr_t和uintptr_t类型,有些不明白,查找后总结如下参考http://www.cnblogs.com/Anker/p/3438480.html这2个类型定义如下/*Typesfor`void*'pointers.*/#......
  • ServletContext-功能-获取MIME类型、域对象、获取文件服务器路径
    ServletContext-功能-获取MIME类型获取MIME类型:MIME类型:在互联网通信过程中定义的一种文件数据类型格式:大类型/小类型text/htmlimage/jpeg获......
  • 记一次由mybatis的判空类型的错误
    差不多是这种形状的异常:###Errorqueryingdatabase. Cause:java.lang.IllegalArgumentException:invalidcomparison:java.util.Dateandjava.lang.String###Cau......
  • jeecgboot 数据字典下拉框j-dict-select-tag使用
    页面配置数据字典product_type后端@Dict(dicCode="product_type")privateStringtype;前端<j-dict-select-tagv-decorator="['type',validatorRules.type]"placeho......
  • java数据类型
    java语言的数据类型分为:基本数据类型,引用数据类型基本数据类型的四类八种整数byte取值范围-128~127shortintlong浮点数floatdouble字符charbuer......