点击“蓝字”关注,一起进阶共同成长
列表推导式可以帮助你通过某个条件取出一个字典的子集;也可以把一个列表通过规则重组为一个字典,方便后续使用。
取出一个字典的子集
d = {
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5,
'f': 6,
'g': 7
}
case1 = {k: v for k, v in d.items() if v > 4}
print(f'case1: {case1}')
case1: {'e': 5, 'f': 6, 'g': 7}
列表重组为一个字典
nodes = [
{'node_id': "e3rdf", 'number': '1001'},
{'node_id': "f5g44", 'number': '1002'},
{'node_id': "hbj7h", 'number': '1003'},
{'node_id': "jky7g", 'number': '1004'}
]
case2 = {item['node_id']: item for item in nodes}
print(f'case2: {case2}')
case2: {'e3rdf': {'node_id': 'e3rdf', 'number': '1001'}, 'f5g44': {'node_id': 'f5g44', 'number': '1002'}, 'hbj7h': {'node_id': 'hbj7h', 'number': '1003'}, 'jky7g': {'node_id': 'jky7g', 'number': '1004'}}
使用dict()也可以实现同样的效果
case3 = dict((item['node_id'], item) for item in nodes)
print(f'case3: {case3}')
case3: {'e3rdf': {'node_id': 'e3rdf', 'number': '1001'}, 'f5g44': {'node_id: 'f5g44', 'number': '1002'}, 'hbj7h': {'node_id': 'hbj7h', 'number': '1003'}, 'jky7g': {'node_id': 'jky7g', 'number': '1004'}}
详细说一下dict()
# dict用法有一下三种
# class dict(**kwarg)
# class dict(mapping, **kwarg)
# class dict(iterable, **kwarg)
# 下面举例说明
case1 = dict(a='one', b='two', c='three')
print(f'case1: {case1}')
case2 = dict([('a', 'one'), ('b', 'two'), ('c', 'three')])
print(f'case2: {case2}')
# [('a', 'one'), ('b', 'two'), ('c', 'three')]可以使用另一种input的形式zip(['a', 'b', 'c'], ['one', 'two', 'three'])
case3 = dict(zip(['a', 'b', 'c'], ['one', 'two', 'three']))
print(f'case3: {case3}')
case1: {'a': 'one', 'b': 'two', 'c': 'three'}
case2: {'a': 'one', 'b': 'two', 'c': 'three'}
case3: {'a': 'one', 'b': 'two', 'c': 'three'}
欢迎留言和我分享,我会第一时间给你反馈
长按关注
一起进阶
Do Hard