这个repo
用来记录一些python技巧、书籍、学习链接等,欢迎star
github地址
有时候我们需要从dict
(或者json
)中取出指定key
值对应的value
,当然可以逐个去取,那么,可不可以一次性取呢,回答当然是Yes
, 如下:
# 随意构造一个dict
In [102]: from string import ascii_lowercase, ascii_uppercase
In [103]: d = list(zip(ascii_lowercase[:10], ascii_uppercase[-10:]))
In [104]: d
Out[104]:
[('a', 'Q'),
('b', 'R'),
('c', 'S'),
('d', 'T'),
('e', 'U'),
('f', 'V'),
('g', 'W'),
('h', 'X'),
('i', 'Y'),
('j', 'Z')]
In [105]: d = dict(d)
In [106]: d
Out[106]:
{'a': 'Q',
'b': 'R',
'c': 'S',
'd': 'T',
'e': 'U',
'f': 'V',
'g': 'W',
'h': 'X',
'i': 'Y',
'j': 'Z'}
#正常按key取值
In [107]: value1 = d['a']
...: value2 = d['b']
...: value3 = d['j']
...:
In [108]: value1, value2, value3
Out[108]: ('Q', 'R', 'Z')
#当然如果不确定key是否存在,可以用下面的方式
In [109]: value1 = d.get('a', -1000)
...: value2 = d.get('no', -1000)
...: value3 = d.get('h')
...:
In [110]: value1, value2, value3
Out[110]: ('Q', -1000, 'X')
# 一次性取出指定一组key对应的value
In [111]: from operator import itemgetter
In [112]: keys = ['a', 'b', 'j']
...: itemgetter(*keys)(d)
...:
Out[112]: ('Q', 'R', 'Z')
其实,如果只是取出一个key
对应的 value
,当然直接取就是,如果取出一组,则考虑使用itemgetter
,毕竟更方便不是~