字典
字典是python中的唯一的映射类型(哈希表)
字典对象是可变的,但是字典的键必须使用不可变对象,一个字典中可以使用不同类型的键值。
字典是无序的 字典的方法: - keys() //以list的形式返回所有key - values() - items() - get() //返回key对应的value - pop() //返回k对应value,并删除这组数据 - update() //D.update(E,**F) 将E,**F加入D中
创建字典
dic = {}dic = dict()help(dict)dict((['a',1],['b',2]))dict(a=1, b=2)字典中key可以是数字,字符串,元组,但不能是list,value可为listfromkeys(),字典元素有相同的值,默认为None。 ddict = {}.fromkeys((‘x’,’y’), 100)dict(zip([list1],[list2]))会生成以list1为key,list2为value的字典dict(x=10,y=10) {'x':10,'y':10}
访问字典
- 直接使用key访问:key不存在会报错,可以使用has_key()或者in和not in判断。- 循环遍历:for k in dic1 : print k,dic1[k] 例:for k in dic.keys():for k, v in dic.items(): print ('{0}:{1}').format(k,v)
流程控制
if
if expression: statements(s)if i == 1 and b == 2 : print ("True") if i == 1 or b == 2 :print ("True") if i == 1 : passelif i == 2 : passelse : pass
逻辑值(bool)包含了两个值 True :表示非空的量,所有非零数 False :表示0,None,空的量
练习
练习1:
- 现有一个字典dict1 保存的是小写字母a-z对应的ASCII码 dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122} 1) 将该字典按照ASCII码的值排序 2) 有一个字母的ASCII错了,修改为正确的值,并重新排序
- 用最简洁的代码,自己生成一个大写字母 A-Z 及其对应的ASCII码值的字典dict2(使用dict,zip,range方法)
- 将dict2与第一题排序后的dict1合并成一个dict3
1、
print sorted(dict1.iteritems(), key = lambda d: d[1], reverse = False)for k in dict1 : if not ord(k) == dict1[k] : print k dict1.update({k:ord(k)})print sorted(dict1.iteritems(), key = lambda d: d[1], reverse = False)
2、
list1=[]list2=[]dic2 = {}for i in range(ord("A"),ord("Z")+1) : list1.append(chr(i))for i in range(ord("A"),ord("Z")+1) : list2.append(i) dic2 = dict(zip(list1,list2))print (dic2)
3、 dict3 = dict1 dict3.update(dict2)
练习2
- 输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换, 然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
- 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1、
x = raw_input()y = raw_input()z = raw_input()if x > y : n = y y = x x = n if y > z : n = z z = y y = n if x > y : n = y y = x x = nelse : if y > z : n = z z = y y = nprint (x,y,z)
2、
I = input("请输入利润,单位万元")print("奖金总数:")if I < 10 : I = I * 0.1 print(I)elif I < 20 : I = (I -10 )*0.075 + 10*0.1 print(I)elif I < 40 : I = (I - 20)*0.05 + 10*0.1+10+0.075 print(I)elif I < 60 : I = (I - 40)*0.03 + 1 + 0.75 + 1 print(I)elif I < 100 : I = (I - 60)*0.015 + 1 +0.75 + 1 +0.6 print(I)else : I = (i - 100 )* 0.01 + 1+0.75+1+0.6+0.6 print(I)