考虑我在Python中有一个元组
numbers = (('One', 1), ('Two', 2), ('Three', 3), ('Four', 4))
我想在字典
中创建numbers_dict
numbers_dict = {}
for number in numbers:
numbers_dict[number[0]] = number[1]
所以我得到
numbers_dict = {
'One': 1,
'Two': 2,
'Three': 3,
'Four': 4,
}
我可以使用语法
做一些更简单的事情numbers_dict = [n[0] : n[1] for n in numbers]
答案 0 :(得分:4)
直接将numbers
传递给dict()
type:
numbers_dict = dict(numbers)
来自文档:
如果给出了位置参数并且它是映射对象,则使用与映射对象相同的键值对创建字典。否则,位置参数必须是可迭代对象。 iterable中的每个项目本身都必须是具有两个对象的可迭代项。每个项目的第一个对象成为新词典中的一个键,第二个对象成为相应的值。
您的numbers
元组是可迭代的,其中的每个元素都是(key, value)
对。
演示:
>>> numbers = (('One', 1), ('Two', 2), ('Three', 3), ('Four', 4))
>>> dict(numbers)
{'One': 1, 'Four': 4, 'Three': 3, 'Two': 2}
你也可以使用dictionary comprehension,但这真的太过分了;只有在为每个键或值执行更有意义的操作时才使用它。但为了完整起见,这看起来像这样:
numbers_dict = {k: v for k, v in numbers}