列表解析式生成字典
场景:
看Python资料时学到了一种通过列表解析式生成字典的方式,工作暂未用到过,先记录下来。
代码:
# 从 Python 2.7 开始,甚至可以用解析式生成字典(哈希表)
# Taken from page 70 chapter 3 of Fluent Python by Luciano Ramalho
# 有如下列表,元素为多个tuple。
In [8]: DIAL_CODES = [
...: (86, 'China'),
...: (91, 'India'),
...: (1, 'United States'),
...: (62, 'Indonesia'),
...: (55, 'Brazil'),
...: (92, 'Pakistan'),
...: (880, 'Bangladesh'),
...: (234, 'Nigeria'),
...: (7, 'Russia'),
...: (81, 'Japan'),
...: ]
...:
# 通过列表解析式生成字典
In [9]: country_code = {country: code for code, country in DIAL_CODES}
# 输出字典
In [10]: country_code
Out[10]:
{'China': 86,
'India': 91,
'United States': 1,
'Indonesia': 62,
'Brazil': 55,
'Pakistan': 92,
'Bangladesh': 880,
'Nigeria': 234,
'Russia': 7,
'Japan': 81}
# 还可以过滤条件生成字典
In [11]: {code: country.upper() for country, code in country_code.items() if code < 66}
Out[11]: {1: 'UNITED STATES', 62: 'INDONESIA', 55: 'BRAZIL', 7: 'RUSSIA'}