对于列表中的每个Python

时间:2016-04-27 15:06:56

标签: python list dictionary

考虑我在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]

1 个答案:

答案 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}