关于python的一些编程小技巧------Part1(字典)



字典(dictionaries)是python中常用的几种数据类型之一,也俗称键值对,字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示

                                                        d = {key1 : value1, key2 : value2 }

它用于存放具有映射关系的数据,对于我们常常刷的leetcode来说,经常会用到哈希表或者数组的方式来当作备忘录,记录一些已经计算过的值,避免一些重复计算。虽然其语法简单,但有时还是会写的“为所欲为”。

 

tips_1 、当你需要判断字典中是否存在某个键时---get

不要像这样

my_dict = {'a': 1, 'b': 2, 'c': 3}

if 'g' in my_dict:
    value = my_dict['g']
else:
    value = 'some default value'
print(value)

也不要像这样

try:
    value = my_dict['g']
except KeyError:
    value = 'some default value'
print(value)

这样虽然看起来没啥毛病,但是总是感觉很复杂的样子。。。

其实可以像这样

value = my_dict.get('g', 'some default value')
print(value)

这样看起来就间接明了很多,get方法主要是当字典中存在健时就获取它的值,不存在时则返回异常提示。

或者也可以使用 setdefault,相对来说更加简单明了,相对于get不同的是,当健不存在时可以设置值。

my_dict = {'a': 1, 'b': 2, 'c': 3}

key = 'a'
value = my_dict.setdefault(key, 'some default value')

print(value)
print(my_dict)

tips_2、多使用列表推导式

当你想要在字典中随机生成一组键值对时,一般会这样:

numbers = (1, 5, 10)
squares = {}
for num in numbers:
    squares[num] = num**2
print(squares)

其实这样更方便

squares = {num: num**2 for num in numbers}
print(squares)

而对于有有明确键值对列表,想组合它们的时候,可以像这样:

keys = ('a', 'b', 'c')
values = [True, 100, 'John Doe']

my_dict = {k: v for k, v in zip(keys, values)}
print(my_dict)

# 或者也可以这样
my_dict2 = dict(zip(keys, values))

assert my_dict2 == my_dict

tips_3、遍历字典

最常使用的应该就是对于字典的一个遍历,有的习惯性的根据健来输出值,比如:

my_dict = {'age': 83, 'is gangster': True, 'name': 'John Doe'}

for key in my_dict:
    val = my_dict[key]
    print('key: {:15s} value: {}'.format(key, val))

最好的方式应该是利用,items()方法

for key, val in my_dict.items():
    print('key: {} value: {}'.format(key, val))

方法其实都很简单,习惯成自然,滴水穿石,不进则翻!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值