字典的用法

python 字典的一些操作

特点:无序,是唯一内置的映射类型。多用于实现哈希表或者关联数组。

key具有唯一性,可以使用固定长度的对象,不能使用列表、字典和包含可变长度类型的元组。访问形式:m[k],k是key。如果找不到,报错:KeyError。

方法和操作如下:


项目


功能


len(m)


 Key的长度


m[k]


 字典m中,key为k的值


m[k]=x


 字典m中,k的值为x


del m[k]


 删除字典键


k in m


 有没有k的key


m.clear()


 


m.copy()


 浅复制


m.fromkeys(s [,value])


 


m.get(k [,v])


 


m.has_key(k)


 


m.items()


 


m.keys()


 


m.pop(k [,default])


 


m.popitem()


 


m.setdefault(k [, v])


 


m.update(b)


 


m.values()


 

*构建字典

字典举例:

phonebook = {‘Alice‘: ‘2341‘, ‘Beth‘: ‘9102‘, ‘Cecil‘: ‘3258‘}

函数Dict可以从其他映射或者序列构建字典

>>> items = [(‘name‘, ‘Gumby‘), (‘age‘, 42)]

>>> d = dict(items)

>>> d

{‘age‘: 42, ‘name‘: ‘Gumby‘}

>>> d[‘name‘]

‘Gumby‘

也可以使用参数的方法:

>>> d = dict(name=‘Gumby‘, age=42)

>>> d

{‘age‘: 42, ‘name‘: ‘Gumby‘}

初始化空字典:

>>> x = {}

>>> x[42] = ‘Foobar‘

>>> x

{42: ‘Foobar‘}

*格式化输出:

>>> phonebook

{‘Beth‘: ‘9102‘, ‘Alice‘: ‘2341‘, ‘Cecil‘: ‘3258‘}

>>> "Cecil‘s phone number is %(Cecil)s." % phonebook

"Cecil‘s phone number is 3258."

>>> template = ‘‘‘

%(title)s

%(text)s

‘‘‘

>>> data = {‘title‘: ‘My Home Page‘, ‘text‘: ‘Welcome to my home page!‘}

>>> print template % data

My Home Page

Welcome to my home page!

另外string.Template 类也很适合这种应用。

*字典方法:

-*清除:clear

下面例子展示clear和把字典置空字典的区别:

>>> x = {}

>>> y = x

>>> x[‘key‘] = ‘value‘

>>> y

{‘key‘: ‘value‘}

>>> x = {}

>>> y

{‘key‘: ‘value‘}

>>> x = {}

>>> y = x

>>> x[‘key‘] = ‘value‘

>>> y

{‘key‘: ‘value‘}

>>> x.clear()

>>> y

{}

-*复制:copy

>>> x = {‘username‘: ‘admin‘, ‘machines‘: [‘foo‘, ‘bar‘, ‘baz‘]}

>>> y = x.copy()

>>> y[‘username‘] = ‘mlh‘

>>> y[‘machines‘].remove(‘bar‘)

>>> y

{‘username‘: ‘mlh‘, ‘machines‘: [‘foo‘, ‘baz‘]}

>>> x

{‘username‘: ‘admin‘, ‘machines‘: [‘foo‘, ‘baz‘]}

浅拷贝的元素指向原有元素,所以改变原有的可变元素,新的也会受影响,反之亦然。换种说法,对元素进行替换,不会对新老都产生影响,但是修改则会有影响。

>>> from copy import deepcopy

>>> d = {}

>>> d[‘names‘] = [‘Alfred‘, ‘Bertrand‘]

>>> c = d.copy()

>>> dc = deepcopy(d)

>>> d[‘names‘].append(‘Clive‘)

>>> c

{‘names‘: [‘Alfred‘, ‘Bertrand‘, ‘Clive‘]}

>>> dc

{‘names‘: [‘Alfred‘, ‘Bertrand‘]}

-*复制key:fromkeys

>>> {}.fromkeys([‘name‘, ‘age‘])

{‘age‘: None, ‘name‘: None}

也可以用dict代替{}

>>> dict.fromkeys([‘name‘, ‘age‘])

{‘age‘: None, ‘name‘: None}

设置其他默认值:

>>> dict.fromkeys([‘name‘, ‘age‘], ‘(unknown)‘)

{‘age‘: ‘(unknown)‘, ‘name‘: ‘(unknown)‘}

-*获取:get

>>> d = {}

>>> print d[‘name‘]

Traceback (most recent call last):

File "", line 1, in ?

KeyError: ‘name‘

>>> print d.get(‘name‘)

None

也可以用其他字符替代None

>>> d.get(‘name‘, ‘N/A‘)

‘N/A‘

-*has_key:是否有key

和k in d是等效的,Python 3.0将取消这个,建议不要使用

>>> d = {}

>>> d.has_key(‘name‘)

False

>>> d[‘name‘] = ‘Eric‘

>>> d.has_key(‘name‘)

True

-*列出值:items and iteritems

>>> d = {‘title‘: ‘Python Web Site‘, ‘url‘: ‘http://www.python.org‘, ‘spam‘: 0}

>>> d.items()

[(‘url‘, ‘http://www.python.org‘), (‘spam‘, 0), (‘title‘, ‘Python Web Site‘)]

>>> it = d.iteritems()

>>> it

>>> list(it) # Convert the iterator to a list

[(‘url‘, ‘http://www.python.org‘), (‘spam‘, 0), (‘title‘, ‘Python Web Site‘)]

Iteritems生成迭代器,一般的情况下使用iteritems比iteritem更有效,尤其是循环的时候。

注:Python 3 items 返回的是迭代器

-*列出关键字:keys and iterkeys

后者是迭代器

根据key出栈:pop

>>> d = {‘x‘: 1, ‘y‘: 2}

>>> d.pop(‘x‘)

1

>>> d

{‘y‘: 2}

-*出栈:popitem

>>> d

{‘url‘: ‘http://www.python.org‘, ‘spam‘: 0, ‘title‘: ‘Python Web Site‘}

>>> d.popitem()

(‘url‘, ‘http://www.python.org‘)

>>> d

{‘spam‘: 0, ‘title‘: ‘Python Web Site‘}

出栈和列表和类似,但是没有append。

-*setdefault:设置默认值。

>>> d = {}

>>> d.setdefault(‘name‘, ‘N/A‘)

‘N/A‘

>>> d

{‘name‘: ‘N/A‘}

>>> d[‘name‘] = ‘Gumby‘

>>> d.setdefault(‘name‘, ‘N/A‘)

‘Gumby‘

>>> d

{‘name‘: ‘Gumby‘}

默认值的默认值为None。

>>> d = {}

>>> print d.setdefault(‘name‘)

None

>>> d

{‘name‘: None}

-*更新:update

>>> d = {

‘title‘: ‘Python Web Site‘,

‘url‘: ‘http://www.python.org‘,

‘changed‘: ‘Mar 14 22:09:15 MET 2008‘

}

>>> x = {‘title‘: ‘Python Language Website‘}

>>> d.update(x)

>>> d

{‘url‘: ‘http://www.python.org‘, ‘changed‘:

‘Mar 14 22:09:15 MET 2008‘, ‘title‘: ‘Python Language Website‘}

-*取值:values and itervalues

>>> d = {}

>>> d[1] = 1

>>> d[2] = 2

>>> d[3] = 3

>>> d[4] = 1

>>> d.values()

[1, 2, 3, 1]

*实例:

存储个人的电话和地址的脚本:

# A simple database

# A dictionary with person names as keys. Each person is represented as

# another dictionary with the keys ‘phone‘ and ‘addr‘ referring to their phone

# number and address, respectively.

people = {

‘Alice‘: {

‘phone‘: ‘2341‘,

‘addr‘: ‘Foo drive 23‘

},

‘Beth‘: {

‘phone‘: ‘9102‘,

‘addr‘: ‘Bar street 42‘

},

‘Cecil‘: {

‘phone‘: ‘3158‘,

‘addr‘: ‘Baz avenue 90‘

}

}

# Descriptive labels for the phone number and address. These will be used

# when printing the output.

labels = {

‘phone‘: ‘phone number‘,

‘addr‘: ‘address‘

}

name = raw_input(‘Name: ‘)

# Are we looking for a phone number or an address?

request = raw_input(‘Phone number (p) or address (a)? ‘)

# Use the correct key:

if request == ‘p‘: key = ‘phone‘

if request == ‘a‘: key = ‘addr‘

# Only try to print information if the name is a valid key in

# our dictionary:

if name in people: print "%s‘s %s is %s." % \

(name, labels[key], people[name][key])

将上述例子改为getkey

# A simple database

# A dictionary with person names as keys. Each person is represented as

# another dictionary with the keys ‘phone‘ and ‘addr‘ referring to their phone

# number and address, respectively.

people = {

‘Alice‘: {

‘phone‘: ‘2341‘,

‘addr‘: ‘Foo drive 23‘

},

‘Beth‘: {

‘phone‘: ‘9102‘,

‘addr‘: ‘Bar street 42‘

},

‘Cecil‘: {

‘phone‘: ‘3158‘,

‘addr‘: ‘Baz avenue 90‘

}

}

labels = {

‘phone‘: ‘phone number‘,

‘addr‘: ‘address‘

}

name = raw_input(‘Name: ‘)

# Are we looking for a phone number or an address?

request = raw_input(‘Phone number (p) or address (a)? ‘)

# Use the correct key:

key = request # In case the request is neither ‘p‘ nor ‘a‘

if request == ‘p‘: key = ‘phone‘

if request == ‘a‘: key = ‘addr‘

# Use get to provide default values:

person = people.get(name, {})

label = labels.get(key, key)

result = person.get(key, ‘not available‘)

print "%s‘s %s is %s." % (name, label, result)

时间: 2024-12-29 02:37:21

字典的用法的相关文章

python字典类型用法举例

字典是python语言中唯一的映射类型,用花括号{}表示,一个字典条目就是一个键值对,方法keys()返回字典的键列表,values()返回字典的值列表,items()返回字典的键值对列表.字典中的值没有任何限制,它们可以是任意python对象,但字典中的键是有类型限制的,每个键只能对应一个值,且键必须是可哈系的,所有不可变类型都是可哈希的.不可变集合frozenset的元素可作为字典的键,但可变集合set就不行了. 以下是字典类型的常用方法. clear():删除字典中所有元素. copy()

GO的MAP字典简单用法示例

package main import "fmt" type PersonInfo struct { ID string Name string Address string } func main() { var personDB map[string]PersonInfo personDB = make(map[string]PersonInfo) personDB["12345"] = PersonInfo{"12345", "T

python3 字典常见用法总结

python3 字典常见用法总结 Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} # 也可如此创建字典 dict1 = { 'abc': 456 } dict2 = { 'abc': 123, 98.6: 37 } 注意: 每个键与值用冒号隔开(:

python:将序列转成字典的用法

初学者学习笔记 如何将两个序列,变成字典? 这里的用法是通过并行迭代的[zip函数],zip函数是作用于任意多的序列,可以处理不等长度的序列,最短的序列"用完"的时候就停止了. 栗子: x = [1,2,3,4,5,6,7] y = ["one","two","three","four","five"] dic = dict(zip(x,y)) print(dic) {1: 'one',

Python数据结构之列表元组字典的用法

数据结构的含义 在学习数据结构之前,我们先来了解下数据结构的含义.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python语言中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序号----即元素的位置,称为索引或下标,索引从0开始递增. 典型的序列包括列表.元组和字符串.其中,列表是可变的(可修改),而元组和字符串是不可变的(一旦创建了就是固定的).列表.元组和字符串也是较常用的数据结构

python里字典的用法介绍

一.什么是字典 字典是python里的一种数据类型,特点是元素的无序性,和键key的唯一性.字典的创建方法是{key:values},字典里的键key只能是不可变的数据类型(整型,字符串或者是元组),值values可以是任何数据类型.字典里的一组key:values叫做一个键值对item. 二.字典的基本操作 首先我们创建一个字典: a={'name':'tom','age':18,'sex':'male','height':'175cm'} b={'one':111,'name':'lisa'

python 字典的用法

1. 创建一个空字典 dict = {} 2. 判断字典中有无目标索引 if a in dict 3. 字典中索引的值加一 dict['a'] = dict.get('a', 0) + 1 4. 将字典写入csv文件 writer = csv.writer(csvfile) for key, value in dict.items(): writer.writerow([key, value]) 原文地址:https://www.cnblogs.com/o-din/p/10211664.html

python字典的用法

字典 - dict 1.什么是字典 1.字典是一种可变的容器,可以存储任意类型的数据 2.字典中的每个数据都是用'键'(key)来进行索引的,而不向列表和元组中可以使用整数下标来进行索引 3.字典中的数据是没有先后顺序的,字典的存储是无序的 4.字典中数据以键(key):值(value)对的方式进行存储的 5.字典的键不能重复,且只能用不可变的数据作为字典的键 2.语法 1.使用字典的字面值创建字典 使用 {} 来表示一个字典,里面允许出现若干键值对 1.创建空字典 dic = {} 2.创建非

python 字典|列表用法

1.列表 1 s=['1','2','3'] // 定义列表s 2 3 print(s) //打印列表s 4 5 print(len(s)) //打印列表长度 len()函数可用作测量长度 具体功能可以分别代入试一试 6 7 print(type(s)) //打印列表的类型 8 9 print(s[3]) // 打印列表s的第3个元素 10 11 print(s[-2]) // 打印列表s中倒数第二个元素 12 13 print(s[0:3]) // 打印列表中 0 1 2元素 14 15 pr