您的位置:首页 > 编程语言 > Python开发

Python元组与字典

2017-04-05 12:02 387 查看
python字典概念:字典是另一种可变容器类型,且可存储任意类型对象,如其他容器类型。字典由键和对应值成对组成。字典也被称作关联数组或哈希表。理解好一一对应的关系很重要 1. 掌握字典类型a) 字典的特点无序: 通过键实现元素存取,故无序可变:可以通过键进行改变值异构:支持多种数据类型嵌套:可以在键值对中的值部分出现字典b) 定义字典:ii. 方法一:{key1:value1,key2:value2,...}iii. 方法二:dict()内置函数:指定键值例:d2=dict(name="jerry",age="45",gender="m")iv. 关键点: 键与值用冒号“:”分开; 项与项用逗号“,”分开; 字典中的键必须是唯一的,而值可以不唯一 实例:
dict = {'Alice': '16', ' MadKing ': '17', 'Cecil': '18'}
dict1 = { 'abc': 456 }dict2 = { 'abc': 123, 98.6: 37 } 嵌套定义


访问字典里的值把相应的键放入熟悉的方括弧,如下实例:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];


如果用字典里没有的键访问数据,会输出错误如下:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

print "dict['Alice']: ", dict['Alice'];

以上实例输出结果:
12345
dict['Zara']:
Traceback (most recent call last):
File "test.py", line 4, in <module>
print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

修改字典向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
12345678910
#coding:utf8

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry

print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];

以上实例输出结果:
12
dict['Age']:  8
dict['School']:  DPS School

删除字典元素能删单一的元素也能清空字典,清空只需一项操作。显示删除一个字典用del命令,如下实例:
#coding:utf8

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

del dict['Name']; # 删除键是'Name'的条目
dict.clear();     # 清空词典所有条目
del dict ;        # 删除词典

print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];

但这会引发一个异常,因为用del后字典不再存在:
12345
dict['Age']:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

注意:删除元素尽量用字典内置方法,不需要直接del,后面会讨论。 字典键的特性字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。两个重要的点需要记住:1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
12345
#coding:utf8

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};

print "dict['Name']: ", dict['Name'];

以上实例输出结果:
1
dict['Name']:  Manni

2)键必须不可变,所以可以用数,字符串或元组充当,所以用列表就不行,如下实例:
12345
#coding:utf8

dict = {['Name']: 'Zara', 'Age': 7};

print "dict['Name']: ", dict['Name'];

以上实例输出结果:
1234
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable

掌握字典相关方法1.1 添加元素:dict1[key] = value例如:



1.2 items():变量解包:即将字典转化为键、值作为元组的列表例如:




dict = {'Name': 'Zara', 'Age': 7}

print "Value : %s" %  dict.items()

Value : [('Age', 7), ('Name', 'Zara')]
1.3 keys();键列表
例如:



1.4 values():值列表例如:




1.5 has_key():判断是否存在某个键,返回结果true 或false例如:




1.6 len():取得字典中键值对个数例如:

1.7 update():在原字典上合并字典,键相同时会被覆盖。 例如:


1.8 get():取得某个键对应的值例如:

1.9 pop():弹出指定键对应的值

1.10 popitem():随机弹出键值对

1.11 clear():清除所有元素例如:

2. 掌握字典的遍历:

概念:Python的元组与列表类似,也是一种容器类型,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
Python的元组与列表类似,不同之处在于元组的元素不能修改。特点:支持异构; 支持嵌套; 不可变元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。如下实例:
123
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";

创建空元组
tup1 =();

元组中只包含一个元素时,需要在元素后面添加逗号
tup1 =(50,);

元组与字符串类似,下标索引从0开始,可以进行截取,组合等。

访问元组元组可以使用下标索引来访问元组中的值,如下实例:
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5, 6, 7 );

print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]

以上实例输出结果:
tup1[0]:  physics
tup2[1:5]:  [2, 3, 4, 5]

修改元组元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');

# 以下修改元组元素操作是非法的。
# tup1[0] = 100;

# 创建一个新的元组
tup3 = tup1 + tup2;
print tup3;

以上实例输出结果:
(12, 34.56, 'abc', 'xyz')

删除元组元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
tup = ('physics', 'chemistry', 1997, 2000);

print tup;
del tup;
print "After deleting tup : "
print tup;

以上实例元组被删除后,输出变量会有异常信息,输出如下所示:
123456
('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):
File "test.py", line 9, in <module>
print tup;
NameError: name 'tup' is not defined

元组运算符与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
Python 表达式结果描述
len((1, 2, 3))3计算元素个数
(1, 2, 3) + (4, 5, 6)(1, 2, 3, 4, 5, 6)连接
['Hi!'] * 4('Hi!', 'Hi!', 'Hi!', 'Hi!')复制
3 in (1, 2, 3)True元素是否存在
for x in (1, 2, 3): print x,1 2 3迭代
元组索引,截取因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:元组:
L =('spam', 'Spam', 'SPAM!')

Python 表达式结果描述
L[2]'SPAM!'读取第三个元素
L[-2]'Spam'反向读取;读取倒数第二个元素
L[1:]['Spam', 'SPAM!']截取元素
无关闭分隔符任意对象 以逗号隔开,默认为元组,如下实例:
print 'abc', -4.24e93, 18+6.6j, 'xyz';
x, y = 1, 2;
print "Value of x , y : ", x,y;

元组内置函数Python元组包含了以下内置函数
序号方法及描述
1len(t) 计算元组元素个数。


2max(t) 返回元组中元素最大值。


3min(t) 返回元组中元素最小值。


4tuple(li) 将列表转换为元组


5index():返回指定元素第一次出现的索引位置count():指定元素出现的次数例如:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  字典 Python 杨文