Python技巧--- 数据结构(Dictionary)

简介

在python当中,字典是主要的数据结构。下面通过一些列子介绍一下字典的使用技巧

技巧

1.使用异常处理或者get()来处理KeyError问题
  定义一个字典nbaplayer,key为name,value为球衣号码;定义一个函数,通过球员名字获取球员球衣号码。

nbaplayer={
    'Harden':13,
    'Kobe':24,
    'James':23,
    'Curry':30,
          }
def getNumber(name):
    return name+"'s number is "+str(nbaplayer[name])

调用函数时,发现当输入字典内未定义的Key时,输出结果报错KeyError:‘Bob’。很显然,这种报错是我们在程序中不想见到的。

print getNumber('Harden')
print getNumber('Bob')

Result:
Harden's number is 13
Traceback (most recent call last):
  File "D:/pyCharmCode/DemoTeat/Chapter5.py", line 54, in 
    print getNumber('Bob')
  File "D:/pyCharmCode/DemoTeat/Chapter5.py", line 51, in getNumber
    return name+"'s number is "+str(nbaplayer[name])
KeyError: 'Bob'

解决技巧1,通过Exception处理:

def getNumber(name):
    try:
        return name+"'s number is "+str(nbaplayer[name])
    except KeyError:
        return 'No a player called %s' %name

解决技巧2,通过get()方法:

def getNumber(name):
    #get(key,default=None)
    return name+"'s number is "+str(nbaplayer.get(name,"None"))

print getNumber('Harden')
print getNumber('Bob')
result:
Harden's number is 13
Bob's number is None

2.对字典进行排序

通过sorted()方法对字典进行排序:

dict={'a': 4, 'c': 2, 'b': 3, 'd': 1}
print sorted(dict.items())
result:
[('a', 4), ('b', 3), ('c', 2), ('d', 1)]

通过结果可以发现,此方法是根据key的顺序来重新排序的,如果想要通过value来排序,可以通过以下方式:

print sorted(dict.items(),key=lambda x:x[1])
result:
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]

3.通过字典模拟switch/case语句

python中没有switch/case声明,如果条件过多时,使用If..else代码会及其不整洁。这里我们可以使用字典来完成switch/case

操作。具体形式如下:

func_dict = {
... 'cond_a': handle_a,
... 'cond_b': handle_b,
... }

cond = 'cond_a'
func_dict[cond]()

考虑到switch/case存在default的情况,这里可以通过技巧1介绍的get()方法来等价。

字典模拟switch/case语句具体事例如下(简单计算器):

def calculator_dict(operator,x,y):
    return{
        'add':lambda :x+y,
        'sub':lambda :x-y,
        'mul':lambda :x*y,
        'div':lambda :x/y,
          }.get(operator,lambda :None)()
print calculator_dict('add',5,6)
print calculator_dict('haha',9,0)
result:
11
None

以上技巧,个人认为比较实用。如果还有其他好用技巧,欢迎一块探讨学习。

你可能感兴趣的:(Python)