【问题标题】:How to print out all keys in a Dictionary with more than just 1 value in Python如何在 Python 中打印出字典中具有多个值的所有键
【发布时间】:2017-07-10 12:50:11
【问题描述】:

我想打印出字典中所有可用的键。

d = {'a': 1, 'c': 1, 'o': 1, 'r': 2, 't': 1}

print(d.keys())

>>> dict_keys(['a', 'c', 'o', 'r', 't'])

但我想打印出所有的键 a, c, o, r, r, t , 因为有 2 r 不仅a, c, o, r, t

【问题讨论】:

  • 为防止混淆:d没有两个r"r" 与值 2 相关联。它可以与任何其他值相关联,包括文本或其他对象。

标签: python-3.x dictionary key


【解决方案1】:

如果你真的想打印 acorrt :

for key, value in d.items() :
    for x in range (0, value):
        print(key)

不过,不确定您为什么要这样做。正如上面提到的评论者所说,一个键是唯一的,它只是改变的值。

【讨论】:

    【解决方案2】:

    使用itertools的变体:

    from itertools import repeat, chain
    
    d = {'a': 1, 'c': 1, 'o': 1, 'r': 2, 't': 1}
    lst = list(chain.from_iterable(repeat(letter, times) 
               for letter, times in d.items()))
    print(lst)  # ['r', 'r', 't', 'a', 'c', 'o']
    

    字典中的每个键 (letter) 是 repeated 的次数与值 (times) 建议的一样多;结果是chained 一起并在列表构造函数中使用。

    或不带repeat(而不带times * [letter]):

    from itertools import chain
    
    lst = list(chain.from_iterable(times * [letter] for letter, times in d.items()))
    

    【讨论】:

    • 感谢您的回答。和解释。看起来很吓人,但你的解释确实有助于我理解编码的含义。
    • 编写代码越多,恐吓就会越少! chain.from_iterable(listOfLists) 是扁平化嵌套列表的标准方法。 itertools 是一个非常有价值的工具集,可以稍微了解一下。祝你好运!
    【解决方案3】:

    谢谢,有人发布了一个答案,我能够对其进行修改。这是一个游戏,我们必须拿出所有可用的字母。

    for k,v in d.items():   
        print(k, end = " ")
        if v > 1:
            print(k, end=" ")
    

    非常感谢您的帮助!!!并分享您的知识

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      • 2022-11-11
      • 2011-06-09
      • 2013-06-17
      • 1970-01-01
      相关资源
      最近更新 更多