同一个代码块中的每行代码都必须保持一致的缩进量 if spam == 42: print('Hello!') print('Howdy!')...end argument expected, got list....字符串一个序列对象,支持用索引获取元素,但它和列表对象不同,字符串是不可变对象,不支持修改。...导致:TypeError: cannot concatenate ‘str’ and ‘int’ objects 字符串与非字符串连接时,必须把非字符串对象强制转换为字符串类型 num_eggs = 12...mouse'] print(spam[3]) 导致:IndexError: list index out of range 列表对象的索引是从0开始的,第3个元素应该是使用 spam[2] 访问 8、字典中使用不存在的键
不可以 dict1 = {'name': 'jack'} # TypeError: unsupported operand type(s) for *: 'dict' and 'int' # 字典不能做乘法运算...可以 str1 = '123' # TypeError: 'in ' requires string as left operand, not int # 字符串判断时,左侧的元素只能是字符串类型...,比如集合不能保存列表,字典,集合 所以就不能判断其类型的元素是否在集合内 # 3.字典判断的是元素是否在keys内,也就是是否是其中的键 切片 通过切片按照规则获取数据序列中的一部分元素 tuple...注意 :str内部的元素也是不可修改的,类似于元组 # del str1[0] # print(str1) # 结论: # 1.列表,字典可以使用del删除内部元素,但是,列表中是删除元素,字典中是删除键值对...c=3, d=4) # 注意:使用关键字参数要防止重复赋值 # TypeError: func() got multiple values for argument 'a' # func(1,2,3,
,因为value是None 或者不支持的操作符和类型,比如尝试对不支持的操作数类型执行操作。...result = [1, 2, 3] * 1.5 # 修正 result = [1, 2, 3] * 2 最后就是常见的字典错误了:试图对字典执行算术操作,例如加、减、乘、除。...def add_numbers(a, b): if not isinstance(a, (int, float)): raise TypeError("Expected int...or float, got {}".format(type(a))) if not isinstance(b, (int, float)): raise TypeError("Expected...int or float, got {}".format(type(b))) return a + b
1.1 语法错误 语法错误,根本过不了python解释器的语法检测,必须在程序执行前就改正。...试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C被按下 NameError 使用一个还未被赋予对象的变量 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误...,写错了) TypeError 传入对象类型与要求的不符合 UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它 ValueError...,下列代码才不会出错,该条件是可预知的 age = int(age) if age == AGE: print('you got it')...break >>: nick >>: sdkf >>: 2 >>: 10 you got it 3.2 之后预防 如果错误发生的条件是不可预知的,则需要用到try...except:在错误发生之后进行处理
: 'int' object is not iterable In [28]: In [36]: d1=dict([("x",1),("y",2)]) # d必须是元素为键值对的元祖的列表...,数字等构成的字符串或者数值,它只能作为右值出现,所谓右值是指等号右边的值,如:int a=123这里的a为左值,123为右值。...、列表和元组 字符串字面量:把文本放入单引号(必须在同一行) ,双引号(必须在同一行),三引号(跨行)中; 字符串是字符的 列表和元组是任意Python对象的序列 字符和元组属于不可变序列...} {}:空字典 映射类型表示一个任意对象的集合,而且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,它通过键进行索引 任何不可变对象都可用作字典的键...,如字符串、数字、元组等 包含可变对象的列表、字典和元组不能用作键 m[k]运算符用于选择映射对象中的一项,其中“k”是一个键值 引用不存在的键会引发KeyError异常 m.iteritems
解决方法是在前面给q赋值,还有一种可能是变量或者函数名拼写错误。...: pop expected at least 1 arguments, got 0 10.TypeError: Can’t convert ‘int’ object to str implicitl...解决办法:使用+拼接时必须使用字符串,或将数字转化成字符串str() 错误例子: >>> 'hello'+9 Traceback (most recent call last): File "", line 1, in 'hello'+9 TypeError: Can't convert 'int' object to str implicitly 11....range() 返回的是“range object”,而不是实际的 list 值。
摘要 ✨ TypeError: unhashable type: 'list' 是Python编程中的常见错误,通常出现在试图将列表作为字典的键或插入集合时。...引言 在Python中,字典的键和集合中的元素必须是“可哈希”的。简单来说,哈希性意味着一个对象在其生命周期中具有不变的哈希值,并且该对象是不可变的。...不可变对象(如tuple、str、int)可以作为字典的键,而像列表(list)这样的可变对象则不行。...不可哈希对象:可变类型,如列表、字典、集合。 因为列表的内容可以随时更改,Python不允许将其作为字典的键或集合中的元素,原因是如果允许这样做,可能会导致集合或字典的键值匹配出现问题。 2....触发错误的场景 通常,TypeError: unhashable type: 'list' 会出现在以下情况中: 2.1 使用列表作为字典的键 my_dict = {[1, 2, 3]: "value
、广播 Matplotlib:绘图,子图,图像 IPython:创建笔记本,典型工作流程 二、实验环境 Python 3.7 运行下述命令检查Python版本 python...常见的容器包括列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)。 列表是有序的可变容器,可以包含不同类型的元素,使用方括号([])来创建。...my_set = {1, 2, 3, 'a', 'b', 'c'} 字典是无序的键值对容器,用于存储具有唯一键的值,使用花括号({})或者dict()函数来创建。...省略了小括号,但是仍然是一个元组。 c. tuple() 函数 tuple()函数可以将其他可迭代对象(如列表、字符串、字典等)转换为元组。...结果是变量a的值为1,变量b的值为2,变量c的值为3。 需要注意的是,变量的数量必须与元组中的元素数量相同,否则会引发异常。
函数语句从下一行开始,并且必须缩进。 函数内的第一条语句是字符串时,该字符串就是文档字符串,也称为 docstring。Python 开发者最好养成在代码中加入文档字符串的好习惯。...**keywords:这是一个可变关键字参数,它会将函数调用时传入的所有未在函数定义中明确指定的关键字参数收集到一个字典中。字典的键是关键字参数的名称,值是对应的参数值。...因为在 Python 里,一个参数不能被多次赋值,所以就会抛出 TypeError: foo() got multiple values for argument 'name' 异常。...对于字典 {'name': 2},由于 name 是仅限位置参数,字典里的 'name' 键就不会和函数定义里的 name 参数冲突了。...函数内部的 'name' in kwds 语句会去检查 'name' 这个键是否在 kwds 字典里,因为 kwds 字典里确实有 'name' 键,所以函数就会返回 True。
错误代码: # 尝试将整数和字符串直接连接 score = 100 print("score:" + score) # TypeError: Can't convert 'int' object...to str implicitly 运行结果: TypeError: Can't convert 'int' object to str implicitly 改正后的代码: # 将整数转换为字符串后再进行连接...错误五:使用不存在的键名访问字典中的元素 案例描述: 如果尝试使用不存在的键名访问字典中的元素,会引发键错误。...'c' in d: print(d['c']) else: print("键'c'不存在") # 输出:键'c'不存在 # 或者使用get方法,如果键不存在则返回...10") # TypeError: unsupported operand type(s) for +: 'int' and 'str' print(result) 运行结果: TypeError
键(Key): 键是一个字符串,必须用双引号括起来。 键名不区分大小写,但通常按照惯例使用小写字母和下划线。...如果字典的键不是基本类型(即str, int, float, bool, None),则设置为True可以跳过这些键;否则将引发TypeError。...如果设置为True,则字典的键会按照键的Unicode码点排序。 indent (int or str, optional): 如果指定为整数,则使用指定的缩进级别来美化输出的JSON字符串。...JSON文件中的字符串必须使用双引号(")来包围键和字符串值。...如果字典的键不是基本类型(即str, int, float, bool, None),则设置为True可以跳过这些键;否则将引发TypeError。
args:expression args:以逗号分隔的参数列表 expression:用到args中各参数的表达式 lambda定义的代码必须是合法的表达式...有函数范围内的命名空间(local),有模块范围内的命名空间(global),有python内建的命名空间(built-in),还有类对象的所有属性组成的命名空间 Python一切皆对象,所以在Python中变量名是字符串对象...例如: In [25]: a=10 表示建立字符串对象a与Number对象10之间的对应关系。...前面已经说过,命名空间是对变量名的分组划分,所以,Python的命名空间就是对许多键-值对的分组划分,即,键值对的集合,因此: Python的命名空间是一个字典,字典内保存了变量名称与对象之间的映射关系...,字典内保存了变量名与对象之间的映射关系, 因此,查找变量名就是在命名空间字典中查找键-值对。
图5-1-1 字典的组成 字典中的键值对,不能随心所欲地创立——本书的目录和页码之间也是一种对应关系,不能乱写——有如下要求: “键”必须唯一,不能重复——参考本书目录理解,目录名称不能重复。...“键”必须是不可变对象——如果书的目录名称会变化,那就不仅仅是眼花缭乱,而是手忙脚乱了。 “值”可以是 Python 中任何类型对象。 “值”可以重复。...至此,在已经学过的 Python 内置对象类型中,能够作为键值对中“键”的有:数字(整数、浮点数、复数)、字符串、元组。...: unhashable type: 'dict' 特别提醒,如果用元组作为键值对的键,其成员只能是数字、字符串或者元组,不能包括任何可变对象。...—虽然键是字符串,在 dict() 中不要将 name 和 age 写成 'name'、'age' ,特别要注意此细节。
空集合:set() 集合是一个无序的 不重复的数据序列 # 集合: 集合是一个无序,不重复的数据序列 # 无序: 程序员无法控制其排不顺序, 程序员无法使用索引查找或修改数据 # 不重复:没有办法在字典中放入相同的值...,会自动去重,类似于字典的键 # 无序: set1 = {1, 2, 5, 6, 3, 4} # 程序员无法利用其顺序,有顺序也无用 # 了解:在集合中会使用数据的值计算哈希值,根据哈希值顺序进行排序...# 布尔值在进行计算时 True == 1 Fasle == 0 # 基础数据类型 int float bool 字符串 都可以用集合储存 set4 = {1, 12.3, True, 0, False...作为元素出现 # 拓展:不能作为集合元素的数据类型,同样不能作为字典的键出现 dict1 = {(1, 2): 3} print(dict1) # TypeError: unhashable type...: 'list' # 列表 字典 集合不能作为字典的键出现 dict2 = {[1, 2]: 3} print(dict2) 16、集合的相关操作 集合的增加 add:添加一个元素,如果值已存在
序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。 一、序列(列表、元组和字符串) 序列中的每个元素都有自己的编号。 Python中有6种内建的序列。...其中列表和元组是最常见的类型。其他包括字符串、Unicode字符串、buffer对象和xrange对象。 下面重点介绍下列表、元组和字符串。...: 'int' object is not iterable 3、字符串 (1)创建 str1='Hello world' print str1 print str1[0] for c in str1:...特点: 键与值用冒号“:”分开; 项与项用逗号“,”分开; 字典中的键必须是唯一的,而值可以不唯一。 字典的基本操作 如何访问字典中的值?...使用字典的注意事项 1、不能允许一键对应多个值; 2、键必须是可哈希的。
字典(也叫散列表)是Python中唯一内建的映射类型。 1、键类型 字典的键可以是数字、字符串或者是元组,键必须唯一。...在Python中,数字、字符串和元组都被设计成不可变类型,而常见的列表以及集合(set)都是可变的,所以列表和集合不能作为字典的键。键可以为任何不可变类型,这正是Python中的字典最强大的地方。...TypeError: unhashable type: 'list' 2、自动添加 即使键在字典中并不存在,也可以为它分配一个值,这样字典就会建立新的项。...3、成员资格 表达式item in d(d为字典)查找的是键(containskey),而不是值(containsvalue)。...,所以不能用做字典的键。
,并且字符串中的元素必须为纯数字,否则无法转换。...' # str res = int(a) print(res, type(res)) # 此时python会报错,报错类型为TypeError a = [1, 2, 3] # list res...,会把字符串中的每一个字符当作列表的元素 3.元组转列表时,会把字符串中的每一个字符当作列表的元素 4.字典转列表时,只保留字典中的键 5.集合转列表时,结果是无序的,因为集合本身就是无序的 a = '...,结果是无序的 3.列表转集合时,结果是无序的 4.元组转集合时,结果是无序的 5.字典转集合时,只保字典中的键,结果是无序的 a = '123' # str res = set(a) print(...1.数字类型是非容器类型,不能转换为字典 2.字符串不能转字典类型,因为字符串不能生成二级容器 3.列表类型转字典类型,列表必须为等长二级容器,子容器中的元素个数必须为2 4.元组类型转字典类型,列表必须为等长二级容器
,下列代码才不会出错,该条件是可预知的 age=int(age) if age == age1: print('you got it')...每一个try,都必须至少有一个except 1.异常类只能来处理指定的异常情况,如果非指定异常则无法处理 s1 = 'hello' try: int(s1) except IndexError...该参数是可选的,如果不提供,异常的参数是"None"。 最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。 示例: 一个异常可以是一个字符串,类或对象。...试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C被按下 NameError 使用一个还未被赋予对象的变量 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误...,写错了) TypeError 传入对象类型与要求的不符合 UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它 ValueError
# TypeError: 'int' object is not iterable 括号内必须是可迭代对象 # list2.extend(4) # 字符串累心哪怕只有一个值,或者只有一个空字符串,都是可迭代类型...字典中的键是惟一的,后定义的内容值会覆盖先定义的 print(dict6) # 字典中键是唯一的但是值可以随意重复 dict7 = {'name': '小明', 'age': 18, 'id': 18...,但是该顺序没法被利用(了解) 12、字典的修改 字典[key] = 值 字典中key必须存在 update: update(键 = 值) update({键:值}) 对应的键一定存在...# 字典的遍历 dict1 = {'name': '小明', 'age': 18, 'gender': '男', 'id': '001'} # 使用for循环对字典进行遍历,默认获取的是字典的每一个键...# 布尔值在进行计算时 True == 1 Fasle == 0 # 基础数据类型 int float bool 字符串 都可以用集合储存 set4 = {1, 12.3, True, 0, False
'] , 消除关键词 def 和重复字段名 abc isidentifier:判断字符串是否是有效的 Python 标识符,可用来判断变量名是否合法 iskeyword:包含全部关键字的冻结的集合 from...= num_fields: raise TypeError(f'Expected {num_fields} arguments, got {len(result)}') return...typename = _sys.intern(str(typename)) # 字符串驻留:提高字符串效率.同样的字符串对象仅仅会保存一份,放在一个字符串储蓄池中,是共用的 if rename...= num_fields: raise TypeError(f'Expected {num_fields} arguments, got {len(result)}')...[3, 2, 1] In[2]:a.sort() In[3]:a Out[3]:[1, 2, 3] sorted key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键
领取专属 10元无门槛券
手把手带您无忧上云