文章目录
1、dict 字典
a.定义
在Python中,字典 是一系列键—值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。在Python中,字典用放在花括号{ } 中的一系列键—值对表示。
键—值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键—值对之间用逗号分隔。
>>> alien={'color':'green','point':3}
#键值对:color-green,point-3
b.创建
创建一个空字典,添加键值对
>>> alien={}
>>> alien['color']='green'
>>> alien['point']=3
>>> print(alien)
{'color': 'green', 'point': 3}
由类似对象组成的字典
alien={
'yellow':1,
'blue':2,
'green':3,
'red':4,
'black':5,
'pinke':6,
}
print(alien)
{'yellow': 1, 'blue': 2, 'green': 3, 'red': 4, 'black': 5, 'pinke': 6}
print("Blue alien's point is "+str(alien['blue'])+".")
Blue alien's point is 2.
favorite_languages={
'jen': 'python',
'sarah': 'c',
}
print("Sarah's favorite language is " + favorite_languages['sarah'].title()+".")
Sarah's favorite language is C.
c.字典的方法
访问字典中的值
>>> alien={'color':'green','point':3}
>>> print(alien['color'])
green
>>> print(alien['point'])
3
>>> print('You just earned '+str(alien['point'])+' points.')
You just earned 3 points.
>>> alien={
... 'yellow':1,
... 'blue':2,
... 'green':3,
... 'red':4,
... 'black':5,
... 'pinke':6,
... }
>>> alien['yellow']
1
判断key是否存在于字典中
>>> 'white' in alien
False
>>> 'blue' in alien
True
>>> alien.get('white')
>>> alien.get('white',0)
0
# dict.get(),如果key不存在,可以返回指定值,也可以返回None值。返回None的时候Python的交互环境不显示结果。
修改字典中的值,直接重新定义
>>> print(alien)
{'color': 'green', 'point': 3}
>>> alien['color']='yellow'
>>> print(alien)
{'color': 'yellow', 'point': 3}
例子
>>> alien= {'x_position': 0, 'y_position': 25, 'speed': 'medium'}
>>> print("Original x-position: " + str(alien['x_position']))
Original x-position: 0
>>> if alien['speed'] == 'slow':
... x_increment = 1
... elif alien['speed'] == 'medium':
... x_increment = 2
... else:
... x_increment = 3
...
>>> alien['x_position'] = alien['x_position'] + x_increment
>>> print("New x-position: " + str(alien['x_position']))
New x-position: 2
>>> alien['speed']='fast'
>>> if alien['speed'] == 'slow':
... x_increment = 1
... elif alien['speed'] == 'medium':
... x_increment = 2
... else:
... x_increment = 3
>>> alien['x_position'] = alien['x_position'] + x_increment
>>> print("New x-position: " + str(alien['x_position']))
New x-position: 5
删除键值对
>>> alien={'color': 'green', 'points': 5}
>>> del alien['color']
>>> print(alien)
{'points': 5}
增加键值对
dict[key]=value
alien['white']=7
for key in alien.keys():
print(key)
yellow
blue
green
red
black
pinke
white
遍历字典中的键值对
#key和value可以缩写:for k, v in alien.items()
alien={
'yellow':1,
'blue':2,
'green':3,
'red':4,
'black':5,
'pinke':6,
}
for key,value in alien.items():
print("key : " + key)
print("value : " + str(value))
key : yellow
value : 1
key : blue
value : 2
key : green
value : 3
key : red
value : 4
key : black
value : 5
key : pinke
value : 6
for key,value in alien.items():
print("key : "+key+"\tvalue : "+str(value))
key : yellow value : 1
key : blue value : 2
key : green value : 3
key : red value : 4
key : black value : 5
key : pinke value : 6
for key,value in alien.items():
print("The "+key+" alien's point is "+str(value)+".")
The yellow alien's point is 1.
The blue alien's point is 2.
The green alien's point is 3.
The red alien's point is 4.
The black alien's point is 5.
The pinke alien's point is 6.
遍历字典中的键、值
for key in alien.keys():
print(key.title())
Yellow
Blue
Green
Red
Black
Pinke
for value in alien.values():
print(str(value))
1
2
3
4
5
6
按顺序遍历字典中的键
for key in sorted(alien.keys()):
print(key)
black
blue
green
pinke
red
yellow
增加键值对
dict[key]=value
alien['white']=7
for value in alien.values():
print(str(value))
1
2
3
4
5
6
6
Notice:提取字典中所有的值,没有考虑是否重复。保留唯一值用set(),见 2.b。
for value in set(alien.values()):
print(str(value))
1
2
3
4
5
6
print(set(alien.values()))
{1, 2, 3, 4, 5, 6}
进阶:嵌套
字典列表
在字典中存储列表
在字典中存储字典
#标记一下,以后再学
2、集合
a.特性
集合类似于列表,不同之处在于集合中的元素是无序的,独一无二的,没有重复值。
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
b.创建
要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。。
c.方法
重复元素在set中自动被过滤:
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
添加和删除元素
>>> set(alien.values()).add(9)
>>> set(alien.values())
{1, 2, 3, 4, 5, 6}
>>> a=set(alien.values())
>>> a.add(9)
>>> a
{1, 2, 3, 4, 5, 6, 9}
>>> a.remove(9)
>>> a
{1, 2, 3, 4, 5, 6}
3、判断语句(多条件判断)
>>> if a<5:
... print('true')
...
true
>>> a=20
>>> if a>=18:
... print("完全民事行为能力人")
...
完全民事行为能力人
if age >= 18:
print('your age is', age)
print('adult')
else:
print('your age is', age)
print('teenager')
一个小例子,判断民事行为能力
age=17
labor = 'yes'
psychotic = 'yes'
if psychotic == 'yes':
print("无民事行为能力人")
else:
if age >= 16 and age < 18 :
if labor == 'yes' :
print("完全民事行为能力人")
else:
print("限制民事行为能力人")
elif age > 18:
print("完全民事行为能力人")
else:
print("无民事行为能力人")
C:\Users\pingguo\Desktop>python day4.py
无民事行为能力人
当修改值后
age=17
labor = 'yes'
psychotic = 'no'
……
C:\Users\pingguo\Desktop>python day4.py
完全民事行为能力人
有空学习一下input函数
另一个有趣的小例子
Python编程:从入门到实践
>>> alien= {'x_position': 0, 'y_position': 25, 'speed': 'medium'}
>>> print("Original x-position: " + str(alien['x_position']))
Original x-position: 0
>>> if alien['speed'] == 'slow':
... x_increment = 1
... elif alien['speed'] == 'medium':
... x_increment = 2
... else:
... x_increment = 3
...
>>> alien['x_position'] = alien['x_position'] + x_increment
>>> print("New x-position: " + str(alien['x_position']))
New x-position: 2
4、循环语句
a.for 循环
列表和字典中都有涉及到,这里再补充一些小例子加深理解。
for循环求和
>>> for value in range(10,45,2):
... print(value)
...
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
>>> sum = 0
>>> for value in range(10,45,2):
... sum=value+sum
...
>>> print(sum)
486
for循环判断奇偶数
for value in range(10,45,3):
if value % 2 == 0:
print(str(value) + ("偶数"))
else:
print(str(value) + ("奇数"))
10偶数
13奇数
16偶数
19奇数
22偶数
25奇数
28偶数
31奇数
34偶数
37奇数
40偶数
43奇数
b.while 循环
while相当于可以循环的if
>>> n=1
>>> if n < 10:
... n=n+1
... print(n)
...
2
>>> n=1
>>> while n < 10:
... n=n+1
... print(n)
...
2
3
4
5
6
7
8
9
10
>>> n=1
>>> while n < 10:
... n=n+1
...
>>> print(n)
10
c.break和continue
break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。
要特别注意,不要滥用break和continue语句。break和continue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break和continue语句。
5、三目表达式
相当于python版IF函数,(条件为真时的结果 if 判段的条件 else 条件为假时的结果)
for value in range(10,45,3):
print(str(value) + "偶数" if(value % 2 == 0) else str(value) + "奇数")
10偶数
13奇数
16偶数
19奇数
22偶数
25奇数
28偶数
31奇数
34偶数
37奇数
40偶数
43奇数