【问题标题】:Dictionary is not giving all elements - Python字典没有给出所有元素 - Python
【发布时间】:2016-06-09 14:26:04
【问题描述】:

我想从列表中制作字典。

import numpy as np

a1 = [1,2,3,4,5,6,7,8,9]
b1 = ['a','b','c','d','e','f','g','h','i']
c1 = ['A','B','C','D','E','F','G','H','I']

array2 = np.array([a1,b1,c1]).tolist()

keys = ['name', 'type','description','logo']

print dict(zip(keys, zip(*array2)))

输出:

{'logo': ('4', 'd', 'D'), 'type': ('2', 'b', 'B'), 'name': ('1', 'a', 'A'), 'description': ('3', 'c', 'C')}
  • 为什么我只得到 4 个元素

  • 为什么字典元素是 4,2,1,3 的随机顺序以及为什么
    不是 1,2,3,4?

【问题讨论】:

  • 您可以添加您希望输出的样子吗?现在我还不清楚。
  • 您将获得 4 个项目,因为 keys 包含 4 个元素。 dict 不保证订单,用户OrdererdDict 为那
  • 好的,谢谢

标签: python numpy dictionary


【解决方案1】:

为什么我只得到 4 个元素?

根据zip documentation

返回列表的长度被截断为最短参数序列的长度。

由于 keys 仅包含 4 个元素,因此您从 zip(keys, zip(*array2)) 生成的压缩列表也将包含 4 个值,从而导致您的 dict 仅包含 4 个值。


为什么字典元素的顺序是随机的?

不保证普通字典中元素的顺序。我认为它是特定于实现的,通常基于键的哈希顺序。如果你想保持一个特定的顺序,你应该使用OrderedDict

import numpy as np
from collections import OrderedDict

a1 = [1,2,3,4,5,6,7,8,9]
b1 = ['a','b','c','d','e','f','g','h','i']
c1 = ['A','B','C','D','E','F','G','H','I']

array2 = np.array([a1,b1,c1]).tolist()

keys = ['name', 'type','description','logo']

print OrderedDict(zip(keys, zip(*array2)))
# prints: OrderedDict([('name', ('1', 'a', 'A')), ('type', ('2', 'b', 'B')), ('description', ('3', 'c', 'C')), ('logo', ('4', 'd', 'D'))])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 2020-06-29
    • 1970-01-01
    • 2021-12-20
    • 2017-01-05
    相关资源
    最近更新 更多