【问题标题】:How do you convert a Dictionary to a List?如何将字典转换为列表?
【发布时间】:2017-06-14 09:48:07
【问题描述】:

例如,如果字典是{0:0, 1:0, 2:0},则创建一个列表:[0, 0, 0]

如果这不可能,您如何取字典的最小值,即字典:{0:3, 1:2, 2:1} 返回1

【问题讨论】:

标签: python python-2.7 list dictionary


【解决方案1】:

您可以简单地采用 minimum

min(dic.values())

然后将其转换为列表

list(dic.values())

但由于字典是无序的,结果列表的元素顺序是不确定的。

中,您无需调用list(..),只需dic.values() 就足够了:

dic.values()

【讨论】:

    【解决方案2】:
    >>> a = {0:0, 1:2, 2:4}
    >>> a.keys()
    [0, 1, 2]
    >>> a.values()
    [0, 2, 4]
    

    【讨论】:

    • 是的,一秒钟后看到了:p
    • ! :D
    【解决方案3】:

    字典定义如下:

    dict{[Any]:[Any]} = {[Key]:[Value]}
    

    您的问题的问题是您没有弄清楚键是什么。

    1:假设键只是数字并且按升序没有间隙dict.values() 就足够了,正如其他作者已经指出的那样。

    2:假设键只是严格升序但不正确的数字:

    i = 0
    list = []
    while i < max(mydict.keys()):
         list.append(mydict[i])
         i += 1
    

    3:假设键只是数字,但不是严格按升序排列:
    还是有办法的,但是你必须先拿到钥匙,然后通过最大的钥匙和try-except块来做到这一点

    4:如果这些都不是,也许dict 不是您想要的,2d 或 3d 数组就足够了? 如果其中一种解决方案确实有效,这也很重要。 Dict 似乎对你正在做的事情来说是个糟糕的选择

    【讨论】:

    • i++ 不是有效的python
    • 另外,除了可以将它们相互比较以找到最小值/最大值之外,无需对键(或值)进行任何假设,您会在那里找到一些奇怪的切线
    • 在您的示例 2 中,您假设键是数字,实际上我不明白您的目标:-/ 在您的第 1 点中,您为什么会假设?第 3 点也是如此,第 4 点的意义何在?
    • 第 4 点的重点?我不确定他想要什么,但如果键是数字,则可以简单地使用索引与键相关的数组。 {0:1, 3:2, 2:3} 表示列表看起来像 [1, 3, 2]。
    • 我不太确定提问者想要什么,所以我为他们提供了 4 个选项
    【解决方案4】:

    dictionary 转换为列表非常简单,.keys().values().items() 有 3 种风格

    >>> test = {1:30,2:20,3:10}
    >>> test.keys() # you get the same result with list(test)
    [1, 2, 3]
    >>> test.values()
    [30, 20, 10]
    >>> test.items()
    [(1, 30), (2, 20), (3, 10)]
    >>> 
    

    (在 python 3 中,您需要调用这些列表)

    使用minmax 函数也很容易找到最大值或最小值

    >>> min(test.keys()) # is the same as min(test)
    1
    >>> min(test.values())
    10
    >>> min(test.items())
    (1, 30)
    >>> max(test.keys()) # is the same as max(test)
    3
    >>> max(test.values())
    30
    >>> max(test.items())
    (3, 10)
    >>>     
    

    (在 python 2 中,为了提高效率,请改用 .iter* 版本)

    最有趣的是找到最小值/最大值的关键,而最小值/最大值也得到了覆盖

    >>> max(test.items(),key=lambda x: x[-1])
    (1, 30)
    >>> min(test.items(),key=lambda x: x[-1])
    (3, 10)
    >>>     
    

    这里你需要一个关键函数,它是一个函数,它将你提供给主函数的任何一个元素都返回给你想要比较的元素(你也可以将其转换为其他元素) .

    lambdadefine anonymous 函数的一种方式,让您无需这样做

    >>> def last(x):
            return x[-1] 
    
    >>> min(test.items(),key=last)
    (3, 10)
    >>> 
    

    【讨论】:

    • .items() 是天才。我不知道有这样的东西存在。谢谢!
    猜你喜欢
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多