字典推导
字典推导与列表推导相似,它将推导出一个字典,具体示例如下:
dict1 = {x : x * x for x in range(6)}
字典解析使用花括号包围,并且需要两个表达式,一个生成key,一个生成value,两个表达式之间使用冒号分割,结果返回字典。若通过print()打印dict1,则输出结果为:
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
上述就是一个简单的字典推导,接下来演示稍微复杂的字典推导,如下所示。
1 dict1 = [(98, 'china'), (85, 'india'), (1, 'united states')]
2 dict2 = {country: code for code, country in dict1}
3 print(dict2)
4 print({code: country for country, code in dict2.items() if code < 90})
运行结果如下图所示。
![](https://img.haomeiwen.com/i5120355/995ac85eb592e6e8.png)
在上例中,第2行通过字典推导将dict1中的值与键作为dict2中的键与值,第4行通过字典推导筛选键值小于90的元素并返回一个新字典。
集合推导
集合推导也与列表推导相似,只需将中括号改为花括号,具体示例如下:
set1 = {x * x for x in range(6)}
集合推导将返回一个集合。若通过print()打印set1,则输出结果为:
{0, 1, 4, 9, 16, 25}
接下来演示集合推导的用法,如下所示。
1 strings = ['Python', 'HTML', 'PHP', 'VR', 'Java', 'C++']
2 print ({len(s) for s in strings})
运行结果如下图所示。
![](https://img.haomeiwen.com/i5120355/9c8073dd97f091ca.png)
在上例中,第2行使用集合推导创建一个字符串长度的集合,字符串长度相同的值只会在集合中出现一次。
网友评论