Python字典的创建及访问

简介:

创建

方法一:

>>> dict1  =  {}
>>> dict2  =  { 'name' 'earth' 'port' 80 }
>>> dict1, dict2
({}, { 'port' 80 'name' 'earth' })

方法二:从Python 2.2 版本起,可以使用一个工厂方法,传入一个元素是列表的元组作为参数

>>> fdict  =  dict (([ 'x' 1 ], [ 'y' 2 ]))
>>> fdict
{ 'y' 2 'x' 1 }

方法三:

从Python 2.3 版本起, 可以用一个很方便的内建方法fromkeys() 来创建一个"默认"字典, 字典中元素具有相同的值 (如果没有给出, 默认为None,这个有点像我框架的oneObject方法):

>>> ddict  =  {}.fromkeys(( 'x' 'y' ),  - 1
>>> ddict
{ 'y' - 1 'x' - 1 }
>>>
>>> edict  =  {}.fromkeys(( 'foo' 'bar' ))
>>> edict
{ 'foo' None 'bar' None }

访问字典中的值

想遍历一个字典(一般用键), 你只需要循环查看它的键, 像这样:

>>> dict2  =  { 'name' 'earth' 'port' 80 }
>>>
>>>>  for  key  in  dict2.keys():
...  print  'key=%s, value=%s'  %  (key, dict2[key])
...
key = name, value = earth
key = port, value = 80

从Python 2.2 开始,可以直接在 for 循环里遍历字典。

>>> dict2  =  { 'name' 'earth' 'port' 80 }
>>>
>>>>  for  key  in  dict2:
...  print  'key=%s, value=%s'  %  (key, dict2[key])
...
key = name, value = earth
key = port, value = 80

想判定其是否存在某个键值对,可以使用has_key()或 in 、 not in 操作符

>>>  'server'  in  dict2  # 或 dict2.has_key('server')
False
>>>  'name'  in  dict  # 或 dict2.has_key('name')
True
>>> dict2[ 'name' ]
'earth'

一个字典中混用数字和字符串的例子:

>>> dict3  =  {}
>>> dict3[ 1 =  'abc'
>>> dict3[ '1' =  3.14159
>>> dict3[ 3.2 =  'xyz'
>>> dict3
{ 3.2 'xyz' 1 'abc' '1' 3.14159 }

更新字典

采取覆盖更新

上例中 dict2['name']='earth';

更新 dict2['name']='abc';

删除字典元素和字典

del dict2['name'] # 删除键为“name”的条目

dict2.clear() # 删除dict2 中所有的条目

del dict2 # 删除整个dict2 字典

dict2.pop('name') # 删除并返回键为“name”的条目

dict2  =  { 'name' 'earth' 'port' 80 }
>>> dict2.keys()
[ 'port' 'name' ]
>>>
>>> dict2.values()
[ 80 'earth' ]
>>>
>>> dict2.items()
[( 'port' 80 ), ( 'name' 'earth' )]
>>>
>>>  for  eachKey  in  dict2.keys():
...  print  'dict2 key' , eachKey,  'has value' , dict2[eachKey]
...
dict2 key port has value  80
dict2 key name has value earth

update()方法可以用来将一个字典的内容添加到另外一个字典中

dict3  =  { 'server' 'http' 'port' 80 'host' 'venus' }
>>> dict3.clear()
>>> dict3
{}

映射类型相关的函数

>>>  dict (x = 1 , y = 2 )
{ 'y' 2 'x' 1 }
>>> dict8  =  dict (x = 1 , y = 2 )
>>> dict8
{ 'y' 2 'x' 1 }
>>> dict9  =  dict ( * * dict8)
>>> dict9
{ 'y' 2 'x' 1 }
 
dict9  =  dict8.copy()

字典内建方法

方法名字 操作
dict.clear() 删除字典中所有元素
dict.copy() 返回字典(浅复制)的一个副本
dict.fromkeysc(seq,val=None) 创建并返回一个新字典,以seq 中的元素做该字典的键,val 做该字典中所有键对应的初始值(如果不提供此值,则默认为None)
dict.get(key,default=None) 对字典dict 中的键key,返回它对应的值value,如果字典中不存在此键,则返回default 的值(注意,参数default 的默认值为None)
dict.has_key(key) 如果键(key)在字典中存在,返回True,否则返回False. 在Python2.2版本引入in 和not in 后,此方法几乎已废弃不用了,但仍提供一个 可工作的接口。
dict.items() 返回一个包含字典中(键, 值)对元组的列表
dict.keys() 返回一个包含字典中键的列表
dict.values() 返回一个包含字典中所有值的列表
dict.iter() 方法iteritems(), iterkeys(), itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表。
dict.pop(key[, default]) 和方法get()相似,如果字典中key 键存在,删除并返回dict[key],如果key 键不存在,且没有给出default 的值,引发KeyError 异常。
dict.setdefault(key,default=None) 和方法set()相似,如果字典中不存在key 键,由dict[key]=default 为它赋值。
dict.setdefault(key,default=None) 和方法set()相似,如果字典中不存在key 键,由dict[key]=default 为它赋值。





定义字典 dic = {'a':"hello",'b':"how",'c':"you"}

方法一:

for key in dic:

  print key,dic[key]

  print key + str(dic[key])

结果:

  a hello
ahello
c you
cyou
b how
bhow

细节:

print key,dic[key],后面有个逗号,自动生成一个空格

print key + str(dic[key]),连接两个字符串,用的是加号,直接输出,中间不加逗号

方法二:

for (k,v) in dic.items():

  print "dic[%s]="%k,v

结果:

  dic[a]= hello
dic[c]= you
dic[b]= how

方法三:

for k,v in dic.iteritems():

  print "dic[%s]="%k,v

结果:

  dic[a]= hello
dic[c]= you
dic[b]= how

对比:

items()返回的是列表对象,而iteritems()返回的是iterator对象。例如:

print dic.items()        #[('a', 'hello'), ('c', 'you'), ('b', 'how')]

print dic.iteritems()   #<dictionary-itemiterator object at 0x020E9A50>

深究:iteritor是迭代器的意思,一次反悔一个数据项,知道没有为止

 for i in dic.iteritems():
 print i
结果:('a', 'hello')
        ('c', 'you')
        ('b', 'how')










本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1629756,如需转载请自行联系原作者
目录
相关文章
|
9月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
495 2
|
9月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
657 0
|
10月前
|
存储 JSON 数据管理
Python字典:高效数据管理的瑞士军刀
Python字典基于哈希表实现,提供接近O(1)的高效查找,支持增删改查、遍历、合并等丰富操作,广泛应用于计数、缓存、配置管理及JSON处理。其灵活性与性能使其成为数据处理的核心工具。
771 0
|
10月前
|
存储 缓存 安全
Python字典:从入门到精通的实用指南
Python字典如瑞士军刀般强大,以键值对实现高效数据存储与查找,广泛应用于配置管理、缓存、统计等场景。本文详解字典基础、进阶技巧、实战应用与常见陷阱,助你掌握这一核心数据结构,写出更高效、优雅的Python代码。
320 0
|
12月前
|
数据采集 Web App开发 iOS开发
解决Python爬虫访问HTTPS资源时Cookie超时问题
解决Python爬虫访问HTTPS资源时Cookie超时问题
|
存储 人工智能 索引
Python数据结构:列表、元组、字典、集合
Python 中的列表、元组、字典和集合是常用数据结构。列表(List)是有序可变集合,支持增删改查操作;元组(Tuple)与列表类似但不可变,适合存储固定数据;字典(Dictionary)以键值对形式存储,无序可变,便于快速查找和修改;集合(Set)为无序不重复集合,支持高效集合运算如并集、交集等。根据需求选择合适的数据结构,可提升代码效率与可读性。
1182 1
|
存储 应用服务中间件 开发工具
对象存储OSS-Python设置代理访问请求
通过 Python SDK 配置 nginx 代理地址请求阿里云 OSS 存储桶服务。示例代码展示了如何使用 RAM 账号进行身份验证,并通过代理下载指定对象到本地文件。
744 15
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
768 2
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
408 1
|
存储 JSON 索引
一文让你彻底搞懂 Python 字典是怎么实现的
一文让你彻底搞懂 Python 字典是怎么实现的
915 13

推荐镜像

更多