【问题标题】:Python Dictionary Multiplication [duplicate]Python字典乘法[重复]
【发布时间】:2013-11-29 00:40:13
【问题描述】:

假设我们有这个:

dict = {1:[2, 3]}
m = 4
new = {1:[]} # to save time, the keys in "new" were obtained from "dict"

我想使用“dict”来创建“new”,所以每个值在“dict”列表中出现的次数与“m”一样多,这样:

new = {1:[2, 2, 2, 2, 3, 3, 3, 3]} # values appear "m" times

如何通过使用 for 循环来实现这一点?这让我有点困惑,因为我使用了很多 for 循环,任何帮助将不胜感激。 如果你们给出想法而不是给我代码,我更愿意。

【问题讨论】:

    标签: python list dictionary


    【解决方案1】:
    data = {1: [2,3]}
    m = 4
    new = {k:[n for n in lst for i in range(m)] for k,lst in data.items()}
    

    【讨论】:

      【解决方案2】:

      如果您不关心订单:

      data = {1: [2,3]}
      m = 4
      
      # gives {1:[2,3,2,3,2,3,2,3]}
      new_data = { k:v*m for k,v in data.items()}
      

      【讨论】:

        【解决方案3】:

        replicating elements in list 应该让您很好地了解在这种情况下如何进行。

        Python 允许您将想要重复的内容“乘以”重复次数。

        编辑:哇……等等——你不是已经在“复制列表线程中的元素”上发帖了吗?

        【讨论】:

          【解决方案4】:
          >>> from itertools import chain, repeat
          >>> data = {1: [2,3]}
          >>> m = 4
          >>> {k: list(chain.from_iterable(repeat(i, m) for i in data[k])) for k in data}
          {1: [2, 2, 2, 2, 3, 3, 3, 3]}
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-11-12
            • 1970-01-01
            • 1970-01-01
            • 2018-10-13
            • 2020-06-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多