【问题标题】:How to transform items of a list into dictionary values如何将列表项转换为字典值
【发布时间】:2018-12-31 17:06:34
【问题描述】:

我有一个清单:

mylist = [0.2577, 0.2311, 0.6393, 0.159, 0.6135]

dic = {'Bag': None, 'Door': None, 'Duck': None, 'Car': None, 'Girl': None}

如何使用 for 循环使 mylist 的项目分别成为我的 dic 的值。 (需要按顺序进行)

 # The output should be:

{'Bag': 0.2577, 'Door': 0.2311, 'Duck': 0.6393, 'Car': 0.159, 'Girl': 0.6135}

【问题讨论】:

  • 为什么不直接设置值?
  • 我必须用不同的列表和字典做 30 次。有一个健壮的代码为我做这将节省我很多时间。

标签: python list dictionary for-loop


【解决方案1】:

对于新版本的 Python,您可以使用dict() + zip() 创建一个新字典:

dict(zip(dic, mylist))
# {'Bag': 0.2577, 'Door': 0.2311, 'Duck': 0.6393, 'Car': 0.159, 'Girl': 0.6135}

或者就地更新字典:

for k, v in zip(dic, mylist):
    dic[k] = v

print(dic)
# {'Bag': 0.2577, 'Door': 0.2311, 'Duck': 0.6393, 'Car': 0.159, 'Girl': 0.6135}

但这假设 Python3.6+ 的字典是有序的。如果您使用具有 unordered 字典的较低版本,则可以使用 collections.OrderedDict 记住插入键的顺序。

OrderedDict 示例:

from collections import OrderedDict

mylist = [0.2577, 0.2311, 0.6393, 0.159, 0.6135]

items = ['Bag', 'Door', 'Duck', 'Car', 'Girl']

d = OrderedDict(zip(items, mylist))

print(d)
# OrderedDict([('Bag', 0.2577), ('Door', 0.2311), ('Duck', 0.6393), ('Car', 0.159), ('Girl', 0.6135)])

你也可以结合上面的例子只使用列表,列表是有序的

mylist = [0.2577, 0.2311, 0.6393, 0.159, 0.6135]

items = ['Bag', 'Door', 'Duck', 'Car', 'Girl']

d = dict(zip(items, mylist))

print(d)
# {'Bag': 0.2577, 'Door': 0.2311, 'Duck': 0.6393, 'Car': 0.159, 'Girl': 0.6135}

并且是解决您的问题的最直接的方法,因为它直接创建字典。

【讨论】:

    【解决方案2】:

    这应该可以工作:

    dict(zip(dic.keys(), mylist))
    

    【讨论】:

      猜你喜欢
      • 2022-08-23
      • 1970-01-01
      • 2011-07-11
      • 2016-12-03
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多