《转》python学习(9)字典

转自 http://www.cnblogs.com/BeginMan/p/3156960.html

一、映射类型

我理解中的映射类型是:键值对的关系,键(key)映射值(value),且它们是一对多的关系。
字典是Python唯一的映射类型。

扩展1:哈希表
一种数据结构,值是根据相关的键进行数据存储的,形成"键-值对"(key-value pairs),哈希表中的值是没有顺序的。

扩展2:映射类型与序列类型的区别

1):访问方式不同,序列类型用数字类型的键,而映射类型可以用其他对象类型做键(一般式字符串)

>>> lis = [‘a‘,‘b‘,‘c‘]
>>> lis[2]
‘c‘
>>> dic = {‘name‘:‘a‘,‘father‘:‘b‘,‘mother‘:‘c‘}
>>> dic[‘mother‘]
‘c‘

2):存储类型不同,映射类型的键,直接或间接地与值相关。
3):序列类型,有序之列;映射类型则无序之列

二、字典

1、工厂方法dict():

>>> tu=([‘a‘,‘b‘],[‘xx‘,‘yy‘])
>>> tu
([‘a‘, ‘b‘], [‘xx‘, ‘yy‘])
>>> fdict = dict(tu)
>>> fdict
{‘a‘: ‘b‘, ‘xx‘: ‘yy‘}

2、访问形式:

>>> dic
{‘father‘: ‘b‘, ‘name‘: ‘a‘, ‘mother‘: ‘c‘}
>>> for obj in dic:
    print obj

father
name
mother
>>> for obj in dic.keys():
    print obj

father
name
mother
>>> for obj in dic.values():
    print obj

b
a
c
>>> for obj in dic.items():
    print obj

(‘father‘, ‘b‘)
(‘name‘, ‘a‘)
(‘mother‘, ‘c‘)
>>> 

3、has_key()、in、not in来检查是否有某个键,has_key()已慢慢弃用了。

4、有则更新,无则添

5、删除

del dic[‘name‘]   #删除元素
del dic #删除整个

6、操作符
[]、和 in、not in

>>> if ‘name‘ in dic:
    print dic[‘name‘]
a

7、相关函数
dict():创建字典
len():返回键值对数目
hash(obj):返回obj的哈希值

8、内建方法
dict.clear():删除字典中所有元素
dict.copy():浅copy
dict.formkeys():创建字典
dict.get(key,default=None):返回对应键值
dict.has_key():键是否存在
dict.items():返回字典中键值对元祖的列表
dict.keys():键的列表dict.values():值的列表
......

>>> dic.keys()
[‘father‘, ‘name‘, ‘mother‘]
>>> dic.values()
[‘b‘, ‘a‘, ‘c‘]
>>> dic.get(‘name‘)
‘a‘

三、注意

1、不允许一个键对应多个值,一个键只能对应一项
2、当键发生冲突时,取最后一个。
3、Python不会检查键的冲突,也不会因为键的冲突而产生错误,如果检查每个键是否冲突势必会占用很多内存。

>>> dic={‘a‘:‘ss‘,‘a‘:"xxxx"}
>>> dic
{‘a‘: ‘xxxx‘}

4、键必须是可哈希的。
所有不可变类型都是可哈希的,不可变类型如(列表、字典)则不能。
不可变类型:string,integer,tuple、
可变类型:list,dict

5、值相同的数字表示相同的键,如1和1.0的哈希值是相同的,因此它们是相同的键。

>>> dic={1:‘a‘,1.0:‘b‘}
>>> dic
{1: ‘b‘}
时间: 2024-10-25 15:22:14

《转》python学习(9)字典的相关文章

Python学习:字典(dictionary)

dictionary是python内置数据结构中最灵活的.列表list是有序的对象集合,而dictionary是无序的集合.最主要的差别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取. 可变长,异构,任意嵌套.字典可以在原处修改,但不支持用于字符串和列表中的序列操作.因为字典是无序的集合,所以根据固定顺序进行操作是行不通的. 1.dictionary的构造: D={}        #空字典 D = {'spam':2, 'ham':1, 'eggs':3}    #三项目字典 D =

python学习05——字典

笨办法学python第39节 这节主要讲解的是字典,首先字典和列表的两个区别是: 1. 列表中可以通过数字找到列表中的元素,是数字作为索引的:字典中可以通过任何东西找到想要的元素,即字典可以将一个物件和另外一个东西关联. 2. 列表是有顺序的:字典是无序的.(上一节有提到) 本节的代码如下: 1 class Song(object): 2 3 def _init_(self, lyrics): 4 self.lyrics = lyrics 5 6 def sing_me_a_song(self)

Python学习笔记-字典(上)

字典是python独特的一种映射关系的数据类型,由成对的键值(项)组成. 建立方法: 1.直接输入键值建立 items ={'apple':'$5','pear':'$4','banana':'6'} print items['apple'] $5 注意一定使用{ }, 否则成了列表. 2. 通过dict函数从列表建立 items =[['apple','$5'],['pear','$4'],['banana','6']] print items print items[0:1] ditems 

Python学习笔记-字典(下)

同列表和字符串一样,字典也有方法. clear 清空字典中的所有项. 我们可以把空字典赋给某一字典来清空它当中的项.也可以使用clear方法彻底清空字典. x= {} y=x x['age']='25' x['gender']='male' print x  x.clear() print x  print y  {'gender': 'male', 'age': '25'} {} {} 如果将 x.clear 改为 x={},则结果变为 {'gender': 'male', 'age': '2

python学习笔记字典(四)

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的.可哈希表示key必须是不可变类型,如:数字.字符串.元组. 字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合.两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取. 创建字典:  = {::} sh

python 学习分享-字典篇

python字典(Dictionary) dict是无序的 key必须是唯一切不可变的 a={'key1':'value1','key2':'value2'} 字典的增删改查 a['key3']='value3'#在a这个字典里加入新的元素'key3':'value3' del a['key1']#删除a字典中的'key1':'value1' a.clear() # 清空词典所有条目 del a # 删除词典 a['key2']='value2_new'#将key2的值改为'value2_new

python学习之字典

#coding:utf-8__author__ = 'Administrator'from copy import deepcopy#字典由多个键及其对应的值构建的对组成,键是唯一的,值并不唯一phonebook={'lyq':6589,'ming':9878,'tong':4586}#1.dict函数,可以用来通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典item=[('nn','bb'),('age',89)]d=dict(item)print ddd=dict(name='

python学习:字典排序

按字典值排序 按照字典value排序,类似sort -k 命令 import operator x= {1:2,3:4,4:3,2:1,0:0} sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1)) In [38]: sorted_x Out[38]: [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)] sorted_y = sorted(x.iteritems(), key=operator.it

Python学习笔记-字典

字典是python中唯一内建的映射类型. 创建字典phonebook = {'Alice':'2341','Beth':'9102'} 可以使用dict通过其他映射或者键值对的序列建立字典.关键值参数来创建字典. len(d)d中项的数量.d[k]返回关联到键的值,d[k] = v给键赋值,del d[k]删除键k,k in d是否含有键k. 键类型,自动添加,成员资格. 字典的格式化字符串. 方法: 1.clear清除字典中所有的项.在原地操作. 2.copy浅复制,改变值对原数据无影响,删除

Python学习07——字典(2)

笨办法学Python第40节,上次用的第三版的书,这次是第四版的书. 这一节的代码如下: 1 cities = {'CA':'San Francisco', 'MI':'Detroit', 'FL':'Jacksonville'} 2 3 cities['NY'] = 'New York' 4 cities['OR'] = 'Portland' 5 6 def find_city(themap, state): 7 if state in themap: 8 return themap[stat