from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html

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", "b" : "banana", "g" : "grape", "o" : "orange"}
for k in dict:
    print "dict[%s] =" % k,dict[k]
#字典items()的使用
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
#每个元素是一个key和value组成的元组,以列表的方式输出
print dict.items()
#调用items()实现字典的遍历
dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
for (k, v) in dict.items():
    print "dict[%s] =" % k, v
#调用iteritems()实现字典的遍历
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "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", "b" : "banana", "c" : "grape", "d" : "orange"}
#输出key的列表
print dict.keys()
#输出value的列表
print dict.values()
#每个元素是一个key和value组成的元组,以列表的方式输出
print dict.items()
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
it = dict.iteritems()
print it
#字典中元素的获取方法
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "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', 'x', '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>", line 1, 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', 'b'], [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, 'name': 'visaya', '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, value=%s" % (key, d[key])  
      
for key in d.keys():  
    print "key=%s, value=%s" % (key, d[key])  
      
for key in iter(d):  
    print "key=%s, value=%s" % (key, d[key])  
      
for key,item in d.items():  
    print "key=%s, value=%s" % (key, 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=%s" % (key, 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, value=%s" % (key, 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', 23), ('name', '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中dict详解的更多相关文章

  1. Python - 字典(dict) 详解 及 代码

    字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...

  2. 2.python中self详解(程序适用于python3版本)

    先介绍下Python中的类和实例面向对象最重要的概念就是类(class)和实例(instance),类(class)是抽象的模板,比如学生这个抽象的事物,可以用一个Student类来表示.而实例是根据 ...

  3. python中闭包详解

    谈谈自己的理解:python中闭包,闭包的实质   闭包这个概念好难理解,身边朋友们好多都稀里糊涂的,稀里糊涂的林老冷希望写下这篇文章能够对稀里糊涂的伙伴们有一些帮助~ 请大家跟我理解一下,如果在一个 ...

  4. Python——字典dict()详解

    一.字典 字典是Python提供的一种数据类型,用于存放有映射关系的数据,字典相当于两组数据,其中一组是key,是关键数据(程序对字典的操作都是基于key),另一组数据是value,可以通过key来进 ...

  5. Python中super详解

    转至:https://mozillazg.com/2016/12/python-super-is-not-as-simple-as-you-thought.html 说到 super, 大家可能觉得很 ...

  6. python中进程详解

    1:pdb调试:基于命令行的调试工具,非常类似gnu和gdb调试,以下是常用的调试命令: 可以python -m pdb xxx.py(你的py文件名)进入命令行调试模式 命令 简写命令 作用 bea ...

  7. python中assert详解

    assert基础 官方解释:"Assert statements are a convenient way to insert debugging assertions into a pro ...

  8. (转)python中@property详解

    转:https://www.cnblogs.com/zhangfengxian/p/10199935.html

  9. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

随机推荐

  1. A Tour of Go Slicing slices

    ---恢复内容开始--- Slices can be re-sliced, creating a new slice value that points to the same array. The ...

  2. 用户名 不在 sudoers文件中,此事将被报告

    解决方法: 1.通过编辑器来打开/etc/sudoers 2.直接使用命令visudo 打开sudoers后,如下加上自己的帐号保存后就可以了. # User privilege specificat ...

  3. MSSQLSERVER数据库- 判断全局临时表是否存在

    写一下今天遇到的一个问题. 今天因为一些作用域的问题,我使用了全局临时表,然后我在存储过程里使用了这么一段语句,想判断全局临时表是否存在,如果不存在,则将他DROP掉. 可是这段语句没用. if ex ...

  4. 深入浅出Android动态载入jar包技术

    在实际项目中.因为某些业务频繁变更而导致频繁升级client的弊病会造成较差的用户体验,而这也恰是Web App的优势,于是便衍生了一种思路.将核心的易于变更的业务封装在jar包里然后通过网络下载下来 ...

  5. 将View兑换Bitmap

    /** * 中间View保罗转化成Bitmap * */ private Bitmap saveViewBitmap(View view) { // get current view bitmap v ...

  6. Android内存、性能是程序永恒的话题

    内存.性能是程序永恒的话题,实际开发中关于卡顿.OOM也经常是打不完的两只老虎,关于卡顿.OOM的定位方法和工具比较多,这篇文章也不打算赘述了,本章主要是来整理一下JVM的内存模型以及Java对象的生 ...

  7. 漏洞大爆光:QQ漏洞、飞秋漏洞、360浏览器劫持…

    随着互联网应用的高速发展,信息安全已深入到诸多领域,前段时间发生的"Struts 2"漏洞及"心脏出血"漏洞影响了二亿中国网民的信息安全.原因是程序猿缺少细致的 ...

  8. 定制操作(传递函数或lambda表达式)

    很多算法都会比较输入序列中的元素.默认情况下,这类算法使用元素类型的<或==运算符完成比较.标准库还为这些算法定义了额外的版本,允许我们提供自己定义的操作来代替默认运算符. 例如,sort算法默 ...

  9. j2ee学习笔记 javascript 学习

    JavaScript 组成: ECMAScript + BOM + DOM Window对象是JS中的顶层对象 ECMAScript: 规定了一些语法,变量,for循环等等结构 BOM: Browse ...

  10. Android开发JDBC连接mysql数据库导入驱动方法

    在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是 打开eclipse 1.右击要导入jar包的项目,点properties 2.左边选择java ...