`

Python-字典

阅读更多
一.字典的创建
1.可以直接用键值对进行创建:
>>> d_test={"abc":"123","bcd":"456","cde":"789"}
>>> d_test
{'bcd': '456', 'cde': '789', 'abc': '123'}

2.利用dict函数生成字典
>>> item=[('abc',123),('bcd',456),('cde',567)]
>>> d_test2=dict(item)
>>> d_test2
{'bcd': 456, 'cde': 567, 'abc': 123}
>>> d_test3 = dict(abc=123,bcd=456,cde=789)
>>> d_test3 
{'bcd': 456, 'cde': 789, 'abc': 123}
>>> d_test3 = dict('abc'=123,'bcd'=456)
  File "<stdin>", line 1
SyntaxError: keyword can't be an expression

注意:如果按照例子中item方式生成字典,string类型一定要引号,如果按照下面的创建字典一定要不要加引号,否则会报错
二.字典的基本操作:
d_test是一个字典
len(d_test3) 返回字典d中键值对的数量
>>> len(d_test3)
3

d_test[k]返回关联到键k上的值,k值如果不存在时候,会报异常
>>> d_test3['abc']
123
>>> d_test3['123']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: '123'

d_test[k]=val 是把val值关联到键k上,若是不存在,添加
>>> d_test3['abc']='abc'
>>> d_test3
{'bcd': 456, 'cde': 789, 'abc': 'abc'}
>>> d_test3['xyz']=123
>>> d_test3
{'bcd': 456, 'cde': 789, 'xyz': 123, 'abc': 'abc'}

del d_test[k] 删除键为K的项,若不存在,报错:
>>> del d_test3['xyz']
>>> d_test3
{'bcd': 456, 'cde': 789, 'abc': 'abc'}
>>> del d_test3['xyz']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'xyz'

三.字典对象的方法
1.clear清除方法,清除字典中的所有项,没有返回值。
>>> d_test3.clear()
>>> d_test3
{}

2.copy复制方法,复制的方法两个对象各自作修改,对复制的对象或元对象都没有影响,只对本身的对象有影响
>>> d_test3 = dict(abc=123,bcd=456,cde=789)
>>> d_test4=d_test3.copy();
>>> d_test4['abc']=456
>>> d_test4
{'bcd': 456, 'cde': 789, 'abc': 456}
>>> d_test3
{'bcd': 456, 'cde': 789, 'abc': 123}
>>> d_test3['abc']='dtest3'
>>> d_test3
{'bcd': 456, 'cde': 789, 'abc': 'dtest3'}
>>> d_test4
{'bcd': 456, 'cde': 789, 'abc': 456}

以上复制被称为浅复制:还有深复制。深复制确切不是说字典的方法。不过也可以看一下。以下例子可以看出当深复制修改的值是原子类型(数字,字符串)等,深复制和浅复制是没有什么变化的,当修改对象为序列等复杂对象的时候,深复制不会随着原对象的改变而改变,而copy方法就会进行改变
>>> d_test3 = dict(abc=123,bcd=456,cde=[789,123,456])
>>> from copy import deepcopy
>>> d_test4=d_test3.copy()
>>> d_test4
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 123}
>>> d_test5=deepcopy(d_test3)
>>> d_test5
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 123}
>>> d_test3['abc']='test3'
>>> d_test5
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 123}
>>> d_test4
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 123}
>>> d_test3
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 'test3'}
>>> d_test3['cde'].remove(123)
>>> d_test3
{'bcd': 456, 'cde': [789, 456], 'abc': 'test3'}
>>> d_test4
{'bcd': 456, 'cde': [789, 456], 'abc': 123}
>>> d_test5
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 123}

3.get和setdefault方法:
get:当K值存在的时候。字典[K]取值的方法和get方法相同的,但是get(K)不存在,不会报异常,默认返回none值,也可以是设定值。
setdefault,当key存在的时候,返回key对象,当key不存在可以设置对象。注意,改变字典对象
>>> d_test3 = dict(abc=123,bcd=456,cde=[789,123,456])
>>> d_test3.get('abc')
'123'
>>> d_test3.get('abcd')
>>> d_test3.get('abcd','hello')
'hello'
>>> d_test.setdefault('cde','123')
'789'
>>> d_test
{'bcd': '456', 'cde': '789', 'abc': '123'}
>>> d_test.setdefault('cdee','123')
'123'
>>> d_test
{'bcd': '456', 'cde': '789', 'abc': '123', 'cdee': '123'}

4.fromkeys方法:默认可以新建一个字典,且key指定的值,键默认值为none,也可以进行指定
5.has_key:判断K是否存在,返回boolean类型
6迭代对象:
a.items和iteritems
items:把字典中的对象以列表的形式返回,列表中的每个对象的为(键,值)
iteritems:返回字典的迭代器对象,而不是一个列表
>>> d_test.items()
[('bcd', '456'), ('cde', '789'), ('abc', '123')]
>>> it=d_test.iteritems()
>>> list(it)
[('bcd', '456'), ('cde', '789'), ('abc', '123')]

b.keys和iterkeys
与items相似,不过只返回键的对象
>>> d_test.keys()
['bcd', 'cde', 'abc']
>>> keyit=d_test.iterkeys()
>>> list(keyit)
['bcd', 'cde', 'abc']

c.values和itervalues:和keys和iterkeys对象类似。
7.移除
pop可以移除指定的key,及和这个key关联的对象。注意:当key不存在的时候,就会报异常
popitem移除字典中随机一个对象
8.修改
利用update方法,可以用一个字典修改另一个字典。注意:更新格式:字典1.update(字典2),字典2中的key存在字典1中的时候,字典1中key所对应的值修改成字典2中key所绑定的值
若key不存在,就会添加到字典1
>>> d_test1={'abc':'abc'}
>>> d_test.update(d_test1)
>>> d_test
{'bcd': '456', 'cde': '789', 'abc': 'abc'}
>>> d_test1
{'abc': 'abc'}
>>> d_test2={'abcc':'abc'}
>>> d_test.update(d_test2)
>>> d_test
{'bcd': '456', 'cde': '789', 'abc': 'abc', 'abcc': 'abc'}
分享到:
评论

相关推荐

    02-python-字典-集合-不可变集合-赋值机制

    在Python编程语言中,字典、集合和不可变集合是三种重要的数据结构,它们各自具有独特的特性和用途。本篇文章将深入探讨这些概念,并详细解释它们的赋值机制。 首先,我们来了解一下**字典(Dictionary)**。字典是...

    Python-字典数据结构的基准测试hashtablesmapstries等

    虽然比Python字典的平均O(1)略慢,但在数据量大且键值分布均匀时,性能仍然相当不错。 然后,我们来看看字典树(Tries),也称为前缀树。字典树是一种特殊的树形数据结构,用于高效地存储和查找字符串。每个节点...

    Python-字典导出为表格

    要将Python中的字典导出为表格,可以按照以下描述进行操作: 导入所需模块:首先,导入所需的模块,例如pandas、openpyxl等。这些模块提供了处理和操作表格数据的功能。 创建表格对象:使用相应的模块创建一个表格...

    python-3.7.8-amd64.zip

    5. **改进的字典**:在3.7中,字典保持插入顺序,这是一个重要的性能优化,特别是对于那些依赖于迭代顺序的代码。 6. **ASGI支持**:Python 3.7对异步服务器网关接口(ASGI)的支持增强,这是现代Web开发中用于构建...

    python-3.6.4-amd64

    - **改进的字典**:字典现在按照插入顺序保持元素顺序,符合PEP 520。 - **新的内置函数**:如`ascii()`,用于快速生成对象的ASCII表示,避免Unicode字符。 2. **64位系统的兼容性**: - 在64位系统上运行Python...

    Python-3.9.7.tgz

    Python是世界上最受欢迎的编程语言之一,特别是在数据科学、机器学习和Web开发领域。这个名为"Python-3.9.7.tgz"的压缩包文件包含了Python 3.9.7版本的源代码,专为Linux操作系统设计。让我们深入探讨Python 3.9.7在...

    python-3.7.7-amd64

    此外,字典的合并操作也得到了优化,允许更快地合并多个字典。还有新的`dataclass`装饰器,简化了创建数据类的过程,提高了代码可读性。 2. **AMD64架构兼容性**: AMD64架构是AMD公司对Intel的x86-64指令集的实现...

    python-3.9.0-amd64

    - 字典操作优化:字典的合并操作 `|` 和 `|=`, 使得合并两个字典变得更加直观。 - 引入`zoneinfo`模块:Python 3.9 内置了对时区信息的支持,无需额外安装第三方库如pytz。 - 更好的错误消息:Python 3.9 提供了...

    coldnight#coldnight.github.com#Python-字典和列表陷阱1

    Title: Python 字典和列表陷阱Python 中有三个非常好用的数据结构,列表,元组和字典,元组是不可变的,列表可以保存任意类型的Python对象,并

    Python-3.9.13

    2. **更快的字典**:Python 3.9对字典进行了进一步优化,使其查找和插入速度更快,尤其对于大型字典来说,性能提升显著。 3. **增强的类型注解**:增加了对类型注解的支持,如`Literal`,允许你明确指定变量的精确...

    python-3.6.8-amd64

    - **新的数据结构**:如`OrderedDict`在Python 3.6中成为了标准库的一部分,提供有序的字典操作。 2. **AMD64架构**: - AMD64是一种64位指令集架构,由AMD公司开发,广泛应用于现代的个人电脑和服务器。它兼容IA...

    python-3.7.4.zip

    6. **更好的字典实现**:Python 3.7对字典进行了优化,使其在插入和查找时性能更加出色,同时保持了有序字典的行为。 7. **路径操作**:`os.PathLike`接口的引入使得可以更方便地处理路径对象,无论它们是字符串...

    python-3.9.13-amd64安装包

    - **更快的字典操作**:Python 3.9对字典的内部实现进行了优化,提高了查找和插入的速度,尤其是对于大型字典。 - **更快的字符串连接**:在某些情况下,使用`+`连接字符串的速度显著提高,尤其是对于大量字符串的...

    python-3.6.6-amd64.exe.zip

    此外,Python 3.6的字典实现了更高效的操作,尤其是插入和查找操作。字典现在使用了叫做“哈希表”的数据结构,这使得它们在处理大量数据时性能更优。同时,字典现在支持`dict.keys()`, `dict.values()` 和 `dict....

    Python-3.6.5.tgz

    - **新的字典实现**:对字典的数据结构进行了优化,提高了插入和查找的性能。 - **变量消除**:编译器能识别并消除未使用的局部变量,进一步提升运行速度。 2. **在Linux上安装Python 3.6.5**: - 使用包管理器...

    python-3.7.3-amd64.rar

    - **更强的字典实现**:字典现在保持插入顺序,同时保持了良好的性能。 2. **AMD64 架构**: - AMD64 是一种64位扩展的x86指令集,由AMD公司推出,后来被Intel采纳并广泛使用。它支持更大范围的内存地址和更多的...

    python-3.7.3-amd64_安装包.zip

    3. **字典和集合改进**:在Python 3.7中,字典现在保留插入顺序,这使得它们的行为更像Java或C#中的字典。集合操作也得到了优化,如`union`和`intersection`等操作速度更快。 4. **新的垃圾回收机制**:Python 3.7...

    python-3.8.8(32位64位)安装包

    python-3.8.8(32位64位)安装包 ... 现在,在正式的Beta版本中可用,Python 3.8带来了许多巧妙的语法更改,内存共享,更有效的序列化和反序列化,改进的字典等等。 自然地,Python 3.8也带来了各种性能改进。

    python-3.7.4-amd64.zip

    5. **字典合并**:使用`{**a, **b}`语法可以将两个字典合并为一个新的字典,这在编写简洁的代码时非常有用。 6. **安全的随机字符串生成**:`secrets`模块为生成密码、令牌和验证码等安全随机字符串提供了一种标准...

    python-3.7.3-amd64.zip

    5. **新的字典操作**:字典现在支持`|`和`|=`操作符,类似于集合的合并和更新,使得代码更加简洁。 6. **更好的错误消息**:编译器和解释器现在能提供更详细的错误信息,帮助开发者更快地定位和修复问题。 7. **...

Global site tag (gtag.js) - Google Analytics