Python字典(dict)
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中:
>>> names_info = {"name":"Jack","age":"28","job":"IT"}
>>> names_info
{'age': '28', 'job': 'IT', 'name': 'Jack'}
注:
键(key)必须是唯一的,但值(value)则不必。
值(value)可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1. 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。
2. 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。
字典的操作:
查看字典有哪些方法:
>>> a = {"a":1,"b":123}
>>> dir(a)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
1.定义字典值:
>>> names_info = {"name":"Jack","age":"28","job":"IT"}
>>> names_info
{'age': '28', 'job': 'IT', 'name': 'Jack'}
2.访问字典里的值:
>>> names_info
{'age': '28', 'job': 'IT', 'name': 'Jack'}
>>> names_info["name"]
'Jack'
>>> names_info["age"]
'28'
3.访问错误的key时(提示KeyError):
>>> names_info["agex"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'agex'
4.修改字典的值,以及添加新的建值对;
>>> names_info["age"] = 30
>>> names_info["age"]
30
>>> names_info["gongzi"] = 5000
>>> names_info
{'age': 30, 'gongzi': 5000, 'job': 'IT', 'name': 'Jack'}
5.删除字典指定元素及清空字典所有元素。
>>> names_info
{'age': 30, 'gongzi': 5000, 'job': 'IT', 'name': 'Jack'}
>>> del names_info["gongzi"]
>>> names_info
{'age': 30, 'job': 'IT', 'name': 'Jack'}
>>> names_info.clear()
>>> names_info
{}
字典内置函数&方法
以下为内置函数:
序号 | 函数及描述 | 实例 |
---|---|---|
1 | len(dict)计算字典元素个数,即键(key)的总数 | >>> len(names_info) 4 |
2 | str(dict) 输出字典以可打印的字符串表示(双引号,引起来) | >>> str(names_info) "{'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}" |
3 | type(variable)返回输入的变量类型,如果变量是字典就返回字典类型(dict) | >>> type(names_info) <class 'dict'> |
以下为内置方法:
1.用于删除字典内所有元素; clear()
>>> names_info
{'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
>>> names_info.clear()
>>> names_info
{}
2.返回一个字典的浅复制(只会复制第一层,如果值包含列表或列表或字典,修改此内容会一同变化);copy()
>>> names_info = {'age': 30, 'gongzi': 5000, 'job': 'IT', 'name': 'Jack'}
>>> names_info1 = names_info.copy()
>>> names_info1
{'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
3.创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值;fromkeys()
>>> seq = ('name', 'age', 'sex')
>>> dict = dict.fromkeys(seq)
>>> print ("新的字典为 : %s" % str(dict))
新的字典为 : {'age': None, 'name': None, 'sex': None}
>>>
>>> dict = dict.fromkeys(seq, 10)
>>> print ("新的字典为 : %s" % str(dict))
新的字典为 : {'age': 10, 'name': 10, 'sex': 10}
4.请求函数返回指定的键的值,如果存在返回值,如果不存在返回默认指定值;get()
>>> names_info
{'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
>>> names_info.get("sex","指定值")
'指定值'
>>> names_info.get("age","指定值")
30
5.判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false; in
>>> names_info = {'age': 30, 'gongzi': 10000, 'aihao': 'nv', 'name': 'Jack', 'job': 'IT'}
>>> if "age" in names_info:
... print("age is %s"% names_info["age"])
... else:
... print("not in age")
...
age is 30
>>> if "sex" in names_info:
... print("sex is %s"% names_info["sex"])
... else:
... print("not in sex")
...
not in sex
6.以列表返回可遍历的(键, 值) 元组数组;items()
>>> names_info
{'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
>>> names_info.items()
dict_items([('age', 30), ('name', 'Jack'), ('gongzi', 5000), ('job', 'IT')])
7.以列表形式返回一个字典所有的键;keys()
>>> names_info
{'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
>>> names_info.keys()
dict_keys(['age', 'name', 'gongzi', 'job'])
8.setdefault() 方法和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。
>>> names_info
{'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
>>> names_info.setdefault("age",28)
30
>>> names_info
{'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
>>> names_info.setdefault("sex","nv")
'nv'
>>> names_info
{'age': 30, 'name': 'Jack', 'sex': 'nv', 'gongzi': 5000, 'job': 'IT'}
9.函数把字典2的键/值对更新到字典1里;如果存在相同的key使用字典2更新字典1,如果不存在则添加到字典1中;
>>> names_info
{'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
>>> a2
{'aihao': 'nv', 'sex': 'nv', 'gongzi': 10000}
>>> names_info.update(a2)
>>> names_info
{'age': 30, 'gongzi': 10000, 'aihao': 'nv', 'name': 'Jack', 'sex': 'nv', 'job': 'IT'}
10.以列表形式返回字典中的所有值value;values()
>>> names_info
{'age': 30, 'gongzi': 10000, 'aihao': 'nv', 'name': 'Jack', 'sex': 'nv', 'job': 'IT'}
>>> names_info.values()
dict_values([30, 10000, 'nv', 'Jack', 'nv', 'IT'])
>>> list(names_info.values())
[30, 10000, 'nv', 'Jack', 'nv', 'IT']
11.依照索引id形式取出字典中值:
a = [{'ip': '1.1.1.1'}, {'ip': '1.1.1.2'}, {'ip': '1.1.1.3'}]
b = [i['ip'] for i in a]
for i in range(len(b)):
print(i, b[i])
输出:
0 1.1.1.1
1 1.1.1.2
2 1.1.1.3
12.将两个字符串通过拉链(一 一对应)方式,组成字典;
title = "id,name,age,phone,dept,enrooll_data"
line = "28,李保林,19,13713731732,It,2017-08-08"
dic = dict(zip(title.split(","), line.split(",")))
print(dic)
输出:
{'enrooll_data': '2017-08-08', 'id': '28', 'phone': '13713731732', 'name': '李保林', 'age': '19', 'dept': 'It'}
005-Python字典的更多相关文章
-
Python字典和集合
Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...
-
python 字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
-
python字典中的元素类型
python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...
-
python字典copy()方法
python 字典的copy()方法表面看就是深copy啊,明显独立 d = {'a':1, 'b':2} c = d.copy() print('d=%s c=%s' % (d, c)) Code1 ...
-
python 字典实现类似c的switch case
#python 字典实现类似c的switch def print_hi(): print('hi') def print_hello(): print('hello') def print_goodb ...
-
python字典的常用操作方法
Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...
-
Python 字典(Dictionary)操作详解
Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...
-
Python 字典(Dictionary) get()方法
描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: dict.get(key, default=None) 参数 ...
-
Python 字典(Dictionary) setdefault()方法
描述 Python 字典(Dictionary) setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值. 语法 setdefault()方法语法: ...
-
python 字典内置方法get应用
python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...
随机推荐
-
检测内存泄露:Instruments中的Leaks
前言 如果要检测内存泄露,我们会使用Xcode7自带的Instruments中的Leaks工具来检测. 现在的开发环境是ARC,所以很少会出现内存泄漏的情况. 不过我们一定要养好码代码的规范性. 例如 ...
-
Java并发编程-可重入锁
可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍可以获取该锁而不受影响.在JAVA环境下 ReentrantLock 和synchronized 都是 可重入锁. publ ...
-
D5
今天的题目跟前几天的比起来简单了许多 由于T1没有开long long 所以T1全部WA掉了...只悲催的A了第二题 T1:多重背包 其实这一题我真心不会,DP各种弱,简直欲哭无泪... 不过认真的看 ...
-
hdu 3045 Picnic Cows(斜率优化DP)
题目链接:hdu 3045 Picnic Cows 题意: 有n个奶牛分别有对应的兴趣值,现在对奶牛分组,每组成员不少于t, 在每组中所有的成员兴趣值要减少到一致,问总共最少需要减少的兴趣值是多少. ...
-
新CCIE笔记之'口口相传'路由协议
//由于思科所有命令行中没有尖括号"<>"这样的关键字,所以本文中出现命令行中的尖括号中的内容均为注释提示信息,代表此处应该填入那一类数据. 请容许我将RIP和EIGR ...
-
解决vs2017不能添加引用问题
c# 添加引用时报错:“未能正确加载“ReferenceManagerPackage”包”的解决方法 在添加应用的时候,右键点击“引用”,选择“添加引用”后,会提示“**未能正确加载Reference ...
-
PC逆向之代码还原技术,第一讲基本数据类型在内存中的表现形式.浮点,指针寻址公式
目录 代码还原技术 一丶简介代码还原 二丶代码还原中的数据类型表现形式 1.整数类型 2.无符号整数 3.有符号整数 4.浮点数数据类型 5.浮点编码 4.Double类型解析. 三丶浮点汇编 1.浮 ...
-
Oracle配置SQL空间操作要点说明
前面配置PL/SQL直接通过SQL查询SDE空间数据库,网上已有诸多示例, 常见问题如下: ORA-06520: PL/SQL: 加载外部库时出错ORA-06522: Unable to load D ...
-
python—DAY1
# user = "123"# possword = "111"# count = 0## while count < 3:# user_name = i ...
-
Java函数式编程和lambda表达式
为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉代码要怎么做.说白了,函数式编程是基于 ...