python自学成才之路 字典详细用法

2024-06-22 19:18

本文主要是介绍python自学成才之路 字典详细用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 字典介绍
    • 遍历字典
      • 1.遍历字典的键
      • 2.遍历字典上的值
      • 3.遍历键和值
    • 字典嵌套
      • 1.字典列表
      • 2.字典中嵌套列表和字典

字典介绍

字典使用{}表示,内部是一个个键值对,类似于java中的map,但是java中的map有泛型做约束,而python字典则没有。字典的键必须是可hash的,像字符串和整形是可hash,但是如果使用列表或者字典作为键则会报键不能hash异常,如下所示

listtest = ['ds','ds']
userInfo[listtest] = 'sds'Traceback (most recent call last):File "D:/pythonbase/dict/dicBase.py", line 19, in <module>userInfo[listtest] = 'sds'
TypeError: unhashable type: 'list'

字典的键没有强制要求类型必须一致,这在java中是不允许的,但是python中键类型可以不一致,如果在字典中使用不同类型的键,代码不会报错,但是一遍不会这样做,而且不同类型的键在后续操作中容易出问题,所以最好不要使用不同类型的键。

# 不建议使用不同类型的键
userinfo = {}
userinfo[1] = 'hello'
userinfo['2'] = 'world'
print(userinfo)
输出:
{1: 'hello', '2': 'world'}

在字典中使用不同类型的值比较常见,比如定义一个userInfo的字典用来表示用户信息,其中键全是字符串类型,值有字符串类型,也有整形,还有字典类型和列表类型。

userInfo = {}
userInfo['name'] = 'Peter'
userInfo['id'] = 1121021
userInfo['detail'] = {'addr':'new york','age':12,'tel':'21232221021'}
userInfo['friend'] = ['Jane','Bob','Kate']
print(userInfo)
输出:
{'name': 'Peter', 'id': 1121021, 'detail': {'addr': 'new york', 'age': 12, 'tel': '21232221021'}, 'friend': ['Jane', 'Bob', 'Kate']}

在定义一个字典时,可以在定义的时候做初始化,上面的userInfo也可以像下面这样定义:

userInfo = {'name': 'Peter', 'id': 1121021, 'detail': {'addr': 'new york', 'age': 12, 'tel': '21232221021'},'friend': ['Jane', 'Bob', 'Kate']}

遍历字典

1.遍历字典的键

通过for循环遍历字典时,默认是遍历所有的键

userInfo = {'100':'peter','101':'bob','103':'david','104':'jane','105':'kate','106':'jack'}
for key in userInfo:print(key)

也可以使用keys()方法遍历所有的键

for key in userInfo.keys():print(key)

在遍历键时还可以对键做排序操作,但是前提是键的类型都是一致的,否则会报错

for key in sorted(userInfo.keys()):print(key)

2.遍历字典上的值

通过values()方法来遍历所有的值

for value in userInfo.values():print(value)

在遍历值得时候也可以对值做排序操作,但是值得类型必须一致,否则会报错

for value in sorted(userInfo.values()):print(value)

直接遍历值的时候可能会出现很多重复的值,可以使用set来对值做去重处理,前提是值的类型是一致的。

for value in set(userInfo.values()):print(value)

3.遍历键和值

使用items()方法可以同时遍历键和值

for k,v in userInfo.items():print('key = ' + k + ', value = ' + v)

字典嵌套

1.字典列表

列表的元素是字典

userInfos = []
userInfos.append({'name':'Peter','age':12})
userInfos.append({'name':'Jack','age':15})
userInfos.append({'name':'Jane','age':14})
userInfos.append({'name':'Mike','age':13})
print(userInfos)

2.字典中嵌套列表和字典

在字典中同时嵌套字典和列表,比如下面用字典来表示用户信息,第一层是字典,字典里面的兴趣爱好又是列表。

userInfo = {'peter':{'id':'1234','age':12,'tel':'172313133','like':['play guitar','sing','swim']},'bob':{'id':'1235','age':14,'tel':'17232333','like':['play basketball','sing','dance']}
}
print(userInfo)

这篇关于python自学成才之路 字典详细用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085178

相关文章

#error用法

/* *检查编译此源文件的编译器是不是C++编译器 *如果使用的是C语言编译器则执行#error命令 *如果使用的是 C++ 编译器则跳过#error命令 */ #ifndef __cplusplus #error 亲,您当前使用的不是C++编译器噢! #endif #include <stdio.h> int main() {

VMware9.0详细安装

双击VMware-workstation-full-9.0.0-812388.exe文件: 直接点Next; 这里,我选择了Typical(标准安装)。 因为服务器上只要C盘,所以我选择安装在C盘下的vmware文件夹下面,然后点击Next; 这里我把√取消了,每次启动不检查更新。然后Next; 点击Next; 创建快捷方式等,点击Next; 继续Cont

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age

(超详细)YOLOV7改进-Soft-NMS(支持多种IoU变种选择)

1.在until/general.py文件最后加上下面代码 2.在general.py里面找到这代码,修改这两个地方 3.之后直接运行即可

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana

Java注解详细总结

什么是注解?         Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。         注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。 自定义注解  现在我们自定义一个MyTest注解 public @interface MyTest{String aaa();boolean bbb()

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

SQL Server中,isnull()函数以及null的用法

SQL Serve中的isnull()函数:          isnull(value1,value2)         1、value1与value2的数据类型必须一致。         2、如果value1的值不为null,结果返回value1。         3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。        如

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python

python 喷泉码

因为要完成毕业设计,毕业设计做的是数据分发与传输的东西。在网络中数据容易丢失,所以我用fountain code做所发送数据包的数据恢复。fountain code属于有限域编码的一部分,有很广泛的应用。 我们日常生活中使用的二维码,就用到foutain code做数据恢复。你遮住二维码的四分之一,用手机的相机也照样能识别。你遮住的四分之一就相当于丢失的数据包。 为了实现并理解foutain