python3    字典(dict)

概念:1 ,字典是一种可变的容器,可以存储任意类型的数据;

2, 字典中的每个数据都是用“键”(key)进行索引,而不像序列可以用下标进行索引;

3, 字典中的数据没有先后关系,字典的存储是无序的;

4, 字符的数据是以键(key)-值(value)

5,字典的表示方式以{} 括起来,以冒号(:)分隔键值对, 各键值对之间用逗号隔开;

6, 字典的键不能重复,值可以重复;

创建空字典的方法:

d = {}    # 空字典

d = dict() #空字典(迭代)

创建非空字典的方法:

d = {‘a’:1 , 'b':2 }

d = {'name': None , 'age':18 }

字典的值(value)可以为任意类型:

字典的值可以是布尔值,数据, 字符串, None,列表, 元组,字典,以及集合,函数,类对象等所有类型

 >>>
>>> {'a':123}
{'a': 123}
>>> {'a':"abc"}
{'a': 'abc'}
>>> {'a':True}
{'a': True}
>>> {'a':None}
{'a': None}
>>> {'a':(1,2,3)}
{'a': (1, 2, 3)}
>>> {'a':[1,2,3]}
{'a': [1, 2, 3]}
>>> {'a':{"aa":1}}
{'a': {'aa': 1}}
>>>

字典的键(key) 必须为不可变类型的值

不可变的类型: bool  、int 、 float 、 complex 、 str 、 tuple 、frozenset  (包括:None)

不能充当键的类型有:

列表list,字典dict,集合set

例子: {}

 >>> {"a":"a"}
{'a': 'a'}
>>> {100:""}
{100: ''}
>>> {True:"True"}
{True: 'True'}
>>> {None:"abc"}
{None: 'abc'}
>>> {(1911,1,1):"aaa"}
{(1911, 1, 1): 'aaa'}
>>>

练习:

回文

 #!/usr/bin/python

 s = input("Please enter:")
n = len(s) // 2
for x in range(0, n + 1):
if s[x] != s[ -( x+1)]:
print("不是回文")
break
else:
print("是回文")
>>> ================================ RESTART ================================
>>>
Please enter:123321
是回文
>>> ================================ RESTART ================================
>>>
Please enter:abccba
是回文
>>> ================================ RESTART ================================
>>>
Please enter:21352656121
不是回文
>>> ================================ RESTART ================================
>>>
Please enter:fargserwaqrg
不是回文
>>>
 #!/usr/bin/python

 s = input("Please enter:")
l = list(s) #正序列表
l2 = list(reversed(s)) ##反序列表
if l == l2:
print("是回文")
else:
print("不是回文")
>>> ================================ RESTART ================================
>>>
Please enter:asddsa
是回文
>>>
 #!/usr/bin/python

 s = input("Please enter:")
print(s)
print(s[::-1])
if s == s[::-1]:
print("是回文")
else:
print("不是回文")

数字出现次数

 #!/usr/bin/python

 exist = [] # 已访问过的列表
s = input("请输入一串数字:")
for x in s:
if x not in exist:
print(x, '出现', s.count(x), '次')
exist.append(x) #for x in s:
# if x in exist:
# pass
# else:
# print(x, '出现', s.count(x), '次')
# exist.append(x)
>>> ================================ RESTART ================================
>>>
请输入一串数字:7324525901243
7 出现 1 次
3 出现 2 次
2 出现 3 次
4 出现 2 次
5 出现 2 次
9 出现 1 次
0 出现 1 次
1 出现 1 次
>>>

字典符访问:

用方括号访问字典内的成员,字典[‘’键‘’] ;

 >>> d = {'a':1 , 'b':2}
>>> d['a']
1
>>> d['b']
2
>>>

添加或修改字典的键的值:

字典[ "键" ] = 值

如果,键存在,修改键绑定的值; 如果键不存在,创建键并帮定值;

 >>> d1 = {}    #创建空字典
>>> type(d1)
<class 'dict'>
>>> d1['name'] = 'xiaoming' #添加键值对
>>> d1['age'] = 18 ##添加键值对
>>> d1['age'] = 19 #修改键的值
>>>

删除字典元素  del

del     字典【键】

 >>> d1
{'age': 19, 'name': 'xiaoming'}
>>> del d1['age']
>>> d1
{'name': 'xiaoming'}
>>

获取字典元素个数的函数:

len(dict) 返回字典元素(键值对)个数;

字典的成员资格判断in   、not in 运算符;

用in  、not in 来判断一个键是否存在于字典中,如果存在则返回True, 如果不存在则返回False;

 >>> d1
{'age': 16, 'name': 'xiaoming'}
>>>
>>>
>>> 'name' in d1
True
>>> 16 in d1
False
>>>

字典的生成函数:

dict()    生成一个函数,等同于{ }

dict(iterable)   用可迭代对象初始化字典

dict(**kwargv ) 关键字参数形式生成一个字典

例子: d  = dict()

>>> d = dict([('name','xiaoming'),('age', 18)])      #{'age': 18, 'name': 'xiaoming'}    返回字典

d = dict(name="xiaoli", age=19)      #{'age': 19, 'name': 'xiaoli'}

d = {}   # name = "zhangsan"      {'name' : name}     {'name': 'zhangsan'}

字典的方法:

D     代表字典对象

D.clear()                     清空字典

D.pop(key)                 移除键,同时返回此键所对应的值

D.copy()                     返回字典D的副本,只复制一层,(浅拷贝)

D.update(D2)             将字典D2合并到字典D中,如果键相同则值取D2的值作为新值;

D.get(key , default)        返回键key所对应的值,如果没有此键则返回default

D.keys()                         返回可迭代的dict_keys 集合对象

D.values()                      返回可迭代的dict_values 值对象

D.items()                        返回可迭代的dict_iterm对象

 >>> help(d.get)
Help on built-in function get: get(...) method of builtins.dict instance
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. >>> d
{'age': 19, 'name': 'xiaoli'}
>>>
>>>
>>> d.clear
<built-in method clear of dict object at 0x000000000372B948>
>>> d
{'age': 19, 'name': 'xiaoli'}
>>> d.clear()
>>> d
{}
>>> d={'age': 19, 'name': 'xiaoli'}
>>> d
{'age': 19, 'name': 'xiaoli'}
>>> d.pop('name')
'xiaoli'
>>> d1
{'age': 16, 'name': 'xiaoming'}
>>> del d1
>>> d2
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
d2
NameError: name 'd2' is not defined
>>> d1
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
d1
NameError: name 'd1' is not defined
>>> d.copy(d1)
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
d.copy(d1)
NameError: name 'd1' is not defined
>>> d1 = d.copy()
>>> d1
{'age': 19}
>>> d
{'age': 19}
>>> d.get('name', "没找到")
'没找到'
>>> d
{'age': 19}
>>> d2 = {'aa':1,'bb':2}
>>> d.update(d2)
>>> d
{'age': 19, 'bb': 2, 'aa': 1}
>>> d2
{'bb': 2, 'aa': 1}
>>> d.keys()
dict_keys(['age', 'bb', 'aa'])
>>> d.values()
dict_values([19, 2, 1])
>>> d.items()
dict_items([('age', 19), ('bb', 2), ('aa', 1)])
>>>
>>> d.items()
dict_items([('age', 19), ('bb', 2), ('aa', 1)])
>>> for k in d.keys():
print(k) age
bb
aa
>>> for k,v in d.items():
print(k,v) age 19
bb 2
aa 1
>>> for v in d.values():
print(v) 19
2
1
>>>

字典推导式:

语法:   { 键表达式 : 值表达式  for  变量  in 可迭代对象   (if 条件表达式) }

字典推导式可以嵌套的

 >>> name
['xiaoming', 'xiaoli', 'xiaogang', 'zhangsan']
>>> numbers = [1001, 1002, 1003, 1004] >>> an = { numbers[i] : name[i] for i in range(4) if numbers[i] % 2 == 0}
>>> an
{1002: 'xiaoli', 1004: 'zhangsan'}
>>>
 >>> list1 = ['a','b','c']
>>> list2 = [1,2,3]
>>> dict_a = { list1[i] : list2[i] for i in range(3)}
>>> dict_a
{'a': 1, 'c': 3, 'b': 2}
>>>

字典和列表的比较:

in 、 not in

列表的in 操作通常要每个都进行比较;

字典的in 操作不需要比较;

字典的基本函数操作:

len(x)      返回字典的长度

max(x)     返回字典键的最大值

min(x)      返回字典键的最小值

sum(x)      返回字典中所有键的和

any(x)       真值测试,任意键为真,则返回True,否则为False

all(x)          真值测试,所有键为真,则返回True,否则为False

例子

Python之路,第八篇:Python入门与基础8的更多相关文章

  1. Python之路(第八篇)Python内置函数、zip()、max()、min()

    一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...

  2. 【Python之路】第九篇--Python基础之线程、进程和协程

    进程与线程之间的关系 线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除.线程可与属于同一进程的其它线程共享进程所拥有的全 ...

  3. 【Python之路】特别篇--Python面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  4. Python之路【第九篇】堡垒机基础&数据库操作

    复习paramiko模块 Python的paramiko模块,是基于SSH用于连接远程服务器并执行相关操作. SSHClient #!/usr/bin/env python #-*- coding:u ...

  5. Python之路(第七篇)Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数

    一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") ret ...

  6. Python之路(第五篇) Python基本数据类型集合、格式化、函数

    一.变量总结 1.1 变量定义 记录某种状态或者数值,并用某个名称代表这个数值或状态. 1.2 变量在内存中的表现形式 Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是 ...

  7. 【Python之路】特别篇--Python切片

    字符串切片操作 切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割. 注意: 数是可选的,而冒号是必须的. consequence[start:end:step] 切片操作符中的 ...

  8. 【Python之路】特别篇--Python内置函数

    abs() 求绝对值 i = abs(-100) print(i) # 100 all() 循环里面的参数 如果每个元素都为真,那么all返回值为真  假: 0 False None "&q ...

  9. 【Python之路】特别篇--Python文件操作

    文件操作 open函数,该函数用于文件处理 操作文件时,一般需要经历如下步骤: (1)打开文件 (2)操作文件 一.打开文件 文件句柄 = open('文件路径', '模式','编码') 打开文件时, ...

  10. 【Python之路】特别篇--Python装饰器

    前情提要 1. 作用域 在python中,函数会创建一个新的作用域.python开发者可能会说函数有自己的命名空间,差不多一个意思.这意味着在函数内部碰到一个变量的时候函数会优先在自己的命名空间里面去 ...

随机推荐

  1. Oracle X$Tables

    前言 最早从Yong Huang那里看到关于比较详细的X$表的介绍,后来陆续从其他Oracle专家那里得到了不少信息.在Steve Adams 的书中对X$表多有提及,而且他的站点也是个资源比较丰富的 ...

  2. Python类的构成元素

    类的构成元素 公共属性:实例化时无需__init__方法绑定到对象,就可以直接使用:普通属性:实例化时 需要__ini__方法绑定到对象之后,才可以直接使用:私有属性:__sex 双下滑杠开头,需要在 ...

  3. 【转】Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)

    E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended 也可以在nuget上直接安装这个包,它的说明有点过时了,最新版本已经改用对I ...

  4. Linux五种IO模型(同步 阻塞概念)

    Linux五种IO模型 同步和异步 这两个概念与消息的通知机制有关. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.比如,调用readfrom系统调用时,必须等待IO操 ...

  5. SecureCRT修改显示行数

    Scrollback buffer应该是保留的行数,初始值500,修改成自己想要的数值保存即可. 参考:http://blog.csdn.net/w410589502/article/details/ ...

  6. java 常用命令

    #查看堆使用情况jmap -heap [pid]#查看占用内存高的对象jmap -histo:live [pid] | head -n 100#查看占用内存高的对象,dump成文件,线下分析jmap ...

  7. mvc4自定义辅助器方法的学习

    1.什么是辅助器 它们可以对代码块和标记进行打包,以便能够在mvc框架应用程序中重用.可以理解成编写在页面上的C#代码(方法). 2 .自定义辅助器 创建“基本”的mvc示例,并创建Basic控制器, ...

  8. linux下查看运行进程详细信息

    通过ps及top命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等.这时,我们需要通过以下的方法来查看进程的详细信息: Linux在启动一个进程时,系统会在/proc下创建一个 ...

  9. js评分

    js评分    原理:给ele挂载一个自定义属性保存选中的星星数,鼠标经过时,显示所在星数的评价内容,以及给他星星亮起来,鼠标移开时显示的星星数时选择的星星数,没选的话是默认星星数,点击时,将选中的星 ...

  10. 使用DDMS查看设备内的文件系统

    system文件系统存储了一些系统相关的文件 system/app里面是系统自带的应用程序 system/fonts里面存放的是系统自带的字体 system/frameworks里面存放的是系统的一些 ...