Python中的字典详解

作者:未知 / 来源:网络 / 整理:脚本之家如果知识不能与人分享,这不算是真正的知识了。
Python中的字典是python的一种数据结构,它的本质是key和value以及其对应关系的一种集合,一个key可以对应一个多个value。合理的使用字典能给我们编程带来很大的方便。 python中

Python中的字典详解

脚本之家收集整理这篇Python中的字典详解内容希望可以帮到你。

Python中的字典是python的一种数据结构,它的本质是key和value以及其对应关系的一种集合,一个key可以对应一个多个value。合理的使用字典能给我们编程带来很大的方便。

-----python中的数据类型

-----python中的字符串操作

 

python3.0以上,print函数应为print(),不存在dict.iteritems()这个函数

在python中写中文注释会报错,这时只要在头部加上# coding=gbk即可

#字典的添加、删除、修改操作
dict = {"a" : "apple","b" : "banana","g" : "grape","o" : "orange"}
dict["w"] = "watermelon"
del(dict["a"])
dict["g"] = "grapefruit"
print dict.pop("b")
print dict
dict.clear()
print dict
#字典的遍历
dict = {"a" : "apple","o" : "orange"}
for k in dict:
    print "dict[%s] =" % k,dict[k]
#字典items()的使用
dict = {"a" : "apple","c" : "grape","d" : "orange"}
#每个元素是一个key和value组成的元组,以列表的方式输出
print dict.items()
#调用items()实现字典的遍历
dict = {"a" : "apple","o" : "orange"}
for (k,v) in dict.items():
    print "dict[%s] =" % k,v
#调用iteritems()实现字典的遍历
dict = {"a" : "apple","d" : "orange"}
print dict.iteritems()
for k,v in dict.iteritems():
    print "dict[%s] =" % k,v
for (k,v) in zip(dict.iterkeys(),dict.itervalues()):
    print "dict[%s] =" % k,v
   
#使用列表、字典作为字典的值
dict = {"a" : ("apple",),"bo" : {"b" : "banana","o" : "orange"},"g" : ["grape","grapefruit"]}
print dict["a"]
print dict["a"][0]
print dict["bo"]
print dict["bo"]["o"]
print dict["g"]
print dict["g"][1]
 
dict = {"a" : "apple","d" : "orange"}
#输出key的列表
print dict.keys()
#输出value的列表
print dict.values()
#每个元素是一个key和value组成的元组,以列表的方式输出
print dict.items()
dict = {"a" : "apple","d" : "orange"}
it = dict.iteritems()
print it
#字典中元素的获取方法
dict = {"a" : "apple","d" : "orange"}
print dict
print dict.get("c","apple")         
print dict.get("e","apple")
#get()的等价语句
D = {"key1" : "value1","key2" : "value2"}
if "key1" in D:
    print D["key1"]
else:
    print "None"
#字典的更新
dict = {"a" : "apple","b" : "banana"}
print dict
dict2 = {"c" : "grape","d" : "orange"}
dict.update(dict2)
print dict
#udpate()的等价语句
D = {"key1" : "value1","key2" : "value2"}
E = {"key3" : "value3","key4" : "value4"}
for k in E:
    D[k] = E[k]
print D
#字典E中含有字典D中的key
D = {"key1" : "value1","key2" : "value2"}
E = {"key2" : "value3","key4" : "value4"}
for k in E:
    D[k] = E[k]
print D
#设置默认值
dict = {}
dict.setdefault("a")
print dict
dict["a"] = "apple"
dict.setdefault("a","default")
print dict
#调用sorted()排序
dict = {"a" : "apple","b" : "grape","c" : "orange","d" : "banana"}
print dict  
#按照key排序 
print sorted(dict.items(),key=lambda d: d[0])
#按照value排序 
print sorted(dict.items(),key=lambda d: d[1])
#字典的浅拷贝
dict = {"a" : "apple","b" : "grape"}
dict2 = {"c" : "orange","d" : "banana"}
dict2 = dict.copy()
print dict2

#字典的深拷贝
import copy
dict = {"a" : "apple","b" : {"g" : "grape","o" : "orange"}}
dict2 = copy.deepcopy(dict)
dict3 = copy.copy(dict)
dict2["b"]["g"] = "orange"
print dict
dict3["b"]["g"] = "orange"
print dict

补充:
1 初始化
>>> d = dict(name='visaya',age=20)
>>> d = dict(zip(['name','age'],['visaya',20]))

#dict.fromkeys(listkeys,default=0) 把listkeys中的元素作为key均赋值为value,默认为0
>>> d = dict.fromkeys(['a','b'],1)
>>> d
{'a': 1,'b': 1}
2 字典视图和几何
dict.keys()类似信使可以进行交集和并集等集合操作(类似集合,因为不存在重复的项),但dict.values()不可以进行如上操作。


>>> k = d.keys()
>>> k
dict_keys(['a','b'])
>>> list(k)
['a','b']
>>> k | {'x': 3}
{'a','x','b'}
>>> k | {'x'}
{'a','b'}
>>> k | {'x','y'}
{'a','y','b','x'}
>>> k & {'x'}
set()
>>> v = d.values()
>>> v
dict_values([1,2])
>>> v | {'x'}
Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
TypeError: unsupported operand type(s) for |: 'dict_values' and 'set'
3 排序字典键
两种方法:
3.1 sort:
>>> Ks = list(d.keys())
>>> Ks.sort()
>>> for k in Ks:
...     print(k,d[k])
... 
a 1
b 2
3.2 sorted:
>>> for k in sorted(d.keys()):
...     print(k,d[k])
... 
a 1
b 2

3.3 注意
>>> for k in list(d.keys()).sort():
...     print(k,d[k])
... 
Traceback (most recent call last):
  File "<stdin>",in <module>
TypeError: 'NoneType' object is not iterable


出错原因:
list.sort() list.append()函数都是对自身的操作,没有返回值,故需先将list(d.keys())的结果保存下来,在结果上进行sort()
4 常用函数
4.1 get()
D.get(k[,d])   => D[k] if k in D else d. d defaults to none.
4.2 pop()
D.pop(value[,d])   => Remove specified key and return the corresponding value. If key is not found,d is returned if given,otherwise KeyError is raised.
4.3 udpate()
    D.update(E,**F) -> None.  Update D from dict/iterable E and F.
    If E has a .keys() method,does:     for k in E: D[k] = E[k]
    If E lacks .keys() method,does:     for (k,v) in E: D[k] = v
    In either case,this is followed by: for k in F: D[k] = F[k]

>>> d = dict(name='visaya',age=21)
>>> d1= {'age': 20,'sex': 'male'}
>>> d2 = zip(['a',[1,2])


>>> d.update(d1)
>>> d
{'age': 20,'name': 'visaya','sex': 'male'}
#for k in d1: d[k] = d1[k]


>>> d.update(d2)
>>> d
{'age': 20,'sex': 'male'}
#for (k,v) in d2: d[k] = v
4.4 del()
del D[key]
4.5 clear()
4.6 copy()
Python中的dict
初始化
构造方法创建
Python代码  
d = dict()  
d = dict(name="nico",age=23)  
d = dict((['name',"nico"],['age',23]))  
 当然还有更方便,简单的
Python代码  
d = {}  
d = {"name":"nico","age":23}  
 
 
遍历
通过对key的遍历,遍历整个dict
 
Python代码  
d = {"name":"nico","age":23}  
for key in d:  
    print "key=%s,value=%s" % (key,d[key])  
      
for key in d.iterkeys():  
    print "key=%s,d[key])  
      
for key in d.keys():  
    print "key=%s,d[key])  
      
for key in iter(d):  
    print "key=%s,d[key])  
      
for key,item in d.items():  
    print "key=%s,item)  
 
 当然也可以直接遍历value
 
Python代码  
d = {"name":"nico","age":23}  
for value in d.values():  
    print value  
      
for key,value in d.viewitems():  
    print "key=%s,value)  
  
for value in d.viewvalues():  
    print "value=%s" % (value)  
这里values和viewvalues的区别
 
后者返回的是该字典的一个view对象,类似数据库中的view,当dict改变时,该view对象也跟着改变
 
常用方法
 
Python代码  
d = {"name":"nico","age":23}  
d["name"] = "aaaa"  
d["address"] = "abcdefg...."  
print d   #{'age': 23,'name': 'aaaa','address': 'abcdefg....'}  
 
 
获取dict值
Python代码  
print d["name"]               #nico  
print d.get("name")         #nico  
 
 如果key不在dict中,返回default,没有为None
Python代码  
print d.get("namex","aaa")       #aaa  
print d.get("namex")                  #None  
 
排序sorted()
Python代码  
d = {"name":"nico","age":23}  
for key in sorted(d):  
    print "key=%s,d[key])  
#key=age,value=23  
#key=name,value=nico  
 
 
删除del
Python代码  
d = {"name":"nico","age":23}  
Python代码  
del d["name"]  
#如果key不在dict中,抛出KeyError  
del d["names"]  
Python代码  
Traceback (most recent call last):  
  File "F:\workspace\project\pydev\src\ddd\ddddd.py",line 64,in <module>  
    del d["names"]  
KeyError: 'names'  
 
 
清空clear()
Python代码  
d = {"name":"nico","age":23}  
d.clear()  
print d                                                    #{}  
 
copy()
Python代码  
d1 = d.copy()               #{'age': 23,'name': 'nico'}  
#使用返回view对象  
d2 = d1.viewitems()    #dict_items([('age',23),('name','nico')])  
#修改字典d1,新增元素  
d1["cc"] = "aaaaaa"   
print d2                   
#dict_items([('cc','aaaaaa'),('age','nico')])  
 
 
pop(key[,default])
如果key在dict中,返回,不在返回default
Python代码  
#如果key在dict中,返回,不在返回default  
print d.pop("name","niccco")                #nico  
print d.pop("namezzz","niccco")           #niccco  
#key不在dict中,且default值也没有,抛出KeyError  
print d.pop("namezzz")                         #此处抛出KeyError  
 
popitem()
删除并返回dict中任意的一个(key,value)队,如果字典为空会抛出KeyError
Python代码  
d = {"name":"nico","age":23}  
print d.popitem()       #('age',23)  
print d.popitem()       #('name','nico')  
#此时字典d已为空  
print d.popitem()      #此处会抛出KeyError  
 
update([other])
将字典other中的元素加到dict中,key重复时将用other中的值覆盖
Python代码  
d = {"name":"nico","age":23}  
d2 = {"name":"jack","abcd":123}  
d.update(d2)  
print d     #{'abcd': 123,'age': 23,'name': 'jack'} 

 

 

总结

以上是脚本之家为你收集整理的Python中的字典详解全部内容,希望找个程序文章能够帮你解决所遇到的程序开发困惑。

如果觉得脚本之家网站还不错,麻烦将脚本之家网站推荐给好友。

你可能在找的问题:

Python教程

Python的闭包

什么是闭包 #定义一个函数 def test(number): #在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包 def test_in(num

Python教程

Python迭代器

可迭代对象 以直接作用于 for 循环的数据类型有以下几种: 一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等; 一类是 generator ,包括生成器和带

Python教程

Python 装饰器

首先 需求来了 有如下几个封装好的函数供调用: 现在需要在每个函数执行前进行日志记录: 第一个方案 修改每个函数,添加日志记录的代码 但这样显然不太好,存在大量的重复代码,可以将重复代码封装为一个方法

Python教程

Python生成器

什么是生成器 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后

Python教程

Python爬虫入门教程 10-100 图虫网多线程爬取!

写在前面 经历了一顿噼里啪啦的操作之后,终于我把博客写到了第10篇,后面,慢慢的会涉及到更多的爬虫模块,有人问scrapy啥时候开始用,这个我预计要在30篇以后了吧,后面的套路依旧慢节奏的,所以莫着急了,100篇呢

Python教程

Python中斐波那契数列的赋值逻辑!

斐波那契数列 斐波那契数列又称费氏数列,是数学家LeonardodaFibonacci发现的。指的是0、1、1、2、3、5、8、13、21、34、······这样的数列。即从0和1开始,第n项等于第n-1项与n-2项之和。需要注意的是0是第0项

  • 友情链接:微信小游戏
  • 微信扫一扫

    微信扫一扫

    微信扫一扫,分享到朋友圈

    标题
    返回顶部