python基础语法 003-2 数据类型字典

news2024/11/23 12:38:34

1 字典

1.1 字典的表示

字典:也是存储多个数据的,存储多个数据,不记得第二个存储什么用字典,存储多个数据首推列表;

1.1.1 表示方法:

{‘key’ : 'value'},用逗号隔开

#列表表示
my_songs = ['花海', '棉花糖', '起风了','一闪一闪亮晶晶', '青花瓷']
print(my_songs)

print(my_songs[3])#表示喜欢的歌
print(my_songs[4])#表示不喜欢的歌
#列表的缺陷:列表存储多个数据的时候,不知道元素具体表达的含义
#字典能够表示除每个元素具体的意思

#字典的表示方法 {key: value,key1:walue1, key2:walue2},key不能重复,重复后面的值会吧前面的覆盖
#my_songs = ['花海', '棉花糖', '起风了','一闪一闪亮晶晶', '青花瓷']
my_songs = {"favor":"花海", "hated":"棉花糖", "listen_night":"起风了"}


-----结果 -----------------
['花海', '棉花糖', '起风了', '一闪一闪亮晶晶', '青花瓷']
一闪一闪亮晶晶
青花瓷

1.1.2 key是唯一的且不可变的

key用来指定value的内存地址,同样的key会指定同样的地址,所以只能获取一个value

#字典的key是有要求的,不能重复,c重复的前面会被后面覆盖
my_songs = {"favor":"花海", "favor":"棉花糖", "listen_night" : "起风了"}
print(my_songs["favor"])


----结果-----
棉花糖

1.1.3 key可以的类型

#字典的key应该是能够hash哈希,不可变的,不能赋值,一般使用字符串,也可以是其他的不可变的类型
my_songs = {[1]:"花海", "favor":"棉花糖", "listen_night" : "起风了"}


--------结果 -----
raceback (most recent call last):
  File "F:\pythonProject1\字典.py", line 18, in <module>
    my_songs = {[1]:"花海", "favor":"棉花糖", "listen_night" : "起风了"}
TypeError: unhashable type: 'list'

1.2 字典操作

1.2.1 长度,len()

my_songs = {"favor":"花海", "favor":"棉花糖", "listen_night" : "起风了"}
print(len(my_songs))

my_songs = {"favor":"花海", "hated":"棉花糖", "listen_night":"起风了"}
print(len(my_songs))

------结果 ----
2
3

1.2.2 索引和切片

和字符串不一样

my_songs = {"favor":"花海", "hated":"棉花糖", "listen_night":"起风了"}
#字典的索引 KeyError
#字典是没有索引的同样是没有切片的,通过key来找值
#如果有索引,代表有顺序,列表是有序的,而字典是无序的
#字典在内存中储存是乱序的,随机存

print(my_songs)

print(my_songs[0])#KeyError


-----结果--------------
{'favor': '花海', 'hated': '棉花糖', 'listen_night': '起风了'}
Traceback (most recent call last):
  File "F:\pythonProject1\字典.py", line 30, in <module>
    print(my_songs[0])#KeyError
KeyError: 0

my_songs = {0:"花海", "hated":"棉花糖", "listen_night":"起风了"}
print(my_songs[0]) #这个可以

-----------结果----------------
花海





#indexError:索引超出范围
#ValueError:传入参数错误
#KeyError:字典的key有问题

1.3 可变类型,可以做增删改查

my_songs = {"favor":"花海", "hated":"棉花糖", "listen_night":"起风了"}
p
#字典可不可以进行修改 =====》 字典时可变类型?
#只能根据key去操作
my_songs["favor"] = "可不可以"
print(my_songs)

#添加:如果key不在原来的字典当中,就是添加
#如果在,就是修改
my_songs["新的key"] = 'value'
print(my_songs)

#删除
my_songs.pop("favor")
print(my_songs)


----结果-----------------
{'favor': '可不可以', 'hated': '棉花糖', 'listen_night': '起风了'}
{'favor': '可不可以', 'hated': '棉花糖', 'listen_night': '起风了', '新的key': 'value'}
{'hated': '棉花糖', 'listen_night': '起风了', '新的key': 'value'}

1.4 字典函数操作

keys():获取所有key

values():获取所有value

items():获取key + value

my_songs = {'hated': '棉花糖', 'listen_night': '起风了'}
print(my_songs.keys())
print(my_songs.values())
print(my_songs.items()) 



--------结果 -----
dict_keys(['hated', 'listen_night'])
dict_values(['棉花糖', '起风了'])
dict_items([('hated', '棉花糖'), ('listen_night', '起风了')])

1.5 什么时候用字典?什么时候用列表?

可读性强的用字典

需要顺序用列表

"""
接口自动化测试:
测试用例
1:接口地址,请求方法,请求数据(参数)
数据1:/login,GET,yuez
数据2:/register,POST,kewang
数据3:/user,GET,123
有顺序的数据用列表,外层列表
可读性一一对应,用字典
"""

cases = [
   # [''/login'','GET','yuez'],
    {"url":"/login", "method":"get","date":"yuz"},
    '这是第二行数据',
    '这是第三行数据',
]

cases = [
    '这是第一行数据',
    '这是第二行数据',
    '这是第三行数据',
]

例子:将下列数据

t1 = ("aa", 11)
t2 = ("bb", 22)
t3 = [("cc", 11)]

变为字典格式

t1 = ("aa", 11)
t2 = ("bb", 22)
t3 = [("cc", 11)]

new_dict = {}
new_dict[t1[0]] = t1[1]
new_dict[t2[0]] = t2[1]
new_dict[t3[0][0]] = t3[0][1]
print(new_dict)


---结果 ------------
{'aa': 11, 'bb': 22, 'cc': 11}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1860172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023国家最高科学技术奖薛其坤院士:科学家的幸福感来自于哪里

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;2000字丨8分钟阅读 6 月 24 日&#xff0c;2023 年度国家最高科学技术奖在京揭晓&#xff0c;薛其坤院士荣获中国科技界崇高荣誉&#xff0c;这不…

pyCharm项目更改目录后,执行路径未更新的解决办法

最头疼环境问题。 换电脑&#xff0c;原python脚本打成zip包&#xff0c;全部拷贝到新电脑上。一开始放到路径A下&#xff0c;不清楚是路径太长还是路径含有中文&#xff0c;执行失败。于是&#xff0c;更换到路径B&#xff0c;结果&#xff0c;仍然执行失败。Run中显示的信息…

【大数据】—量化交易实战案例双均线策略(移动平均线)

声明&#xff1a;股市有风险&#xff0c;投资需谨慎&#xff01;本人没有系统学过金融知识&#xff0c;对股票有敬畏之心没有踏入其大门&#xff0c;今天用另外一种方法模拟炒股&#xff0c;后面的模拟的实战全部用同样的数据&#xff0c;最后比较哪种方法赚的钱多。 量化交易…

天途重磅推出无人机教管平台3.1版及飞课APP

天途无人机教管平台&#xff0c;是一款为院校和培训机构等企业级客户提供的公开版无人机在线培训系统&#xff0c;包含后台管理的【教管平台】和终端的【掌上天途APP】。 天途历经4年上百次调研和迭代打磨&#xff0c;已为一百多家院校和培训机构等企业级客户解决了无人机教学和…

【2024最新版】Windows11 23H2中文家庭版:免费下载!

Windows 11 23H2中文家庭版系统拥有稳定的性能、丰富的功能和卓越的安全性&#xff0c;很多用户都喜欢给自己的电脑安装上这个版本。但是&#xff0c;许多新手用户不清楚在哪里才能下载到Windows11家庭版&#xff1f;接下来小编给大家带来2024年最新的Windows 11 23H2中文家庭版…

基于rouyi框架的多租户改造

基于rouyi框架的多租户改造&#xff0c;重点是实现权限管理和数据隔离。权限管理相当于从原来的“顶级管理员admin-普通用户user”转变为“顶级管理员admin-租户管理员tanantAdmin-普通用户user”。数据隔离主要通过分库、分表、表内设置tenantId字段进行过滤三种方式。 本文主…

前端项目外包出去,是我痛苦的开始。如何破?

不止一个老铁给我反馈&#xff0c;他们把其前端项目外包出去&#xff0c;非常的痛苦&#xff0c;远不如用自己的员工省心。明面上钱省了&#xff0c;实际精力大量耗费在上面&#xff0c;一算账并没省&#xff0c;反而闹了一肚子气&#xff0c;问我这事该如何破&#xff1f;其实…

IEEE Signal Processing Letters投稿记录

0.写在前面&#xff1a; 该期刊4页正文&#xff0c;第5页只能是参考文献&#xff0c;篇幅紧凑。 最多只有一次小修机会&#xff0c;或者直接接收。网上说平均审稿周期是2.7个月。 祝愿大家都能如愿&#xff0c;一次接收&#xff01; 期刊网址&#xff1a;投稿 投稿网址&…

被忽视的商机:全民拼购模式如何助力企业实现惊人业绩

在当今的商业环境中&#xff0c;一个被大多数人忽视但实则蕴藏着巨大潜力的模式正在悄然崭露头角。不同于传统商业模式的惯性思维&#xff0c;这一模式在细节上进行了巧妙的调整&#xff0c;带来了意想不到的效果。我的一位客户便凭借这一策略&#xff0c;实现了令人瞩目的业绩…

Java项目毕业设计:基于springboot+vue的幼儿园管理系统

数据库:MYSQL5.7 **应用服务:Tomcat7/Tomcat8 使用框架springbootvue** 项目介绍 管理员&#xff1b;首页、个人中心、用户管理、教师管理、幼儿信息管理、班级信息管理、工作日志管理、会议记录管理、待办事项管理、职工考核管理、请假信息管理、缴费信息管理、幼儿请假管理…

轻松驾驭多云存储,不再为文件流转烦恼,可道云teamOS带你走进便捷的多云时代

不知道大家有没有遇到过这样的问题&#xff1a;使用了不同云平台的存储&#xff0c;但不同的平台存储就存在文件不流通、共享困难、管理困难等问题。 对于这种情况&#xff0c;我们该如何进行资源整合&#xff0c;实现不同挂载存储之间的文件管理与流转&#xff1f; 这些问题…

Linux基础 - shell基础

目录 零. 简介 一、常见的 Shell 类型 二、Shell 命令格式 三、基本命令 四、通配符 五、重定向 六、管道 七、变量 八、条件判断和流程控制 零. 简介 Shell 是一种命令解释器&#xff0c;在 Ubuntu 系统中&#xff0c;它负责接收用户在命令行中输入的命令&#xff0c…

AI大神 Sebastian Raschka 发布新书《从零开始构建大语言模型》

Sebastian 热衷于开源软件&#xff0c;还喜欢写作&#xff0c;撰写了畅销书《Python Machine Learning》&#xff08;《Python 机器学习》&#xff09;和《Machine Learning with PyTorch and ScikitLearn》。 最近&#xff0c;Sebastian Raschka 发布了新书《Build a Large L…

pytorch神经网络训练(LeNet-5)

LeNet-5 导包 import osimport torchimport torch.nn as nnimport torch.optim as optimfrom torch.utils.data import Dataset, DataLoaderfrom PIL import Imagefrom torchvision import transforms 定义自定义图像数据集 class CustomImageDataset(Dataset):def __init_…

Git的安装以及使用

一.简单介绍 1.1版本控制 版本控制是指对软件开发过程中各种程序代码,配置文件及说明文档等文件变更管理&#xff0c;是软件配置管理的核心思想之一。 版本控制最重要的内容是追踪文件的变更&#xff0c;它将什么时候&#xff0c;什么人更改了文件的什么内容等信息忠实的记录…

社交小心机:特别的动态给特别的她/他

在社交媒体盛行的今天&#xff0c;微信朋友圈成了我们分享生活点滴的重要平台。 但是&#xff0c;你是否有过这样的烦恼——有些动态只想和特定的人分享&#xff0c;而不是所有人&#xff1f;别担心&#xff0c;今天我就来教大家如何巧妙地设置朋友圈权限&#xff0c;让你的分…

【2024.6.25】今日 IT之家精选新闻

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

C语言 循环语句while 2

应用实例 int main() {char password[20] { 0 };printf("输入密码&#xff1a;>");scanf("%s", password);printf("请确认输入密码(Y/N):>");//清理缓存区int tmp 0;while ((tmp getchar()) ! \n){;}int ch getchar();if (ch Y){pri…

RAG实践 - 搭建本地知识库 - Ollama + AnythingLLM

0&#xff0c;什么是RAG&#xff1f; RAG&#xff0c;即检索增强生成&#xff08;Retrieval-Augmented Generation&#xff09;&#xff0c;是一种先进的自然语言处理技术架构&#xff0c;旨在克服传统大型语言模型&#xff08;LLM&#xff09;在处理开放域问题时的信息容量限…

java 多线程入门

对于 Java 初学者来说&#xff0c;多线程的很多概念听起来就很难理解。比方说&#xff1a; 进程&#xff0c;是对运行时程序的封装&#xff0c;是系统进行资源调度和分配的基本单位&#xff0c;实现了操作系统的并发。线程&#xff0c;是进程的子任务&#xff0c;是 CPU 调度和…