【问题标题】:Combine two lists of different lengths in python在python中组合两个不同长度的列表
【发布时间】:2019-10-16 09:38:53
【问题描述】:

我有 2 个不同长度的列表。 选择一个礼物并分配给一个名字,然后将下一个礼物分配给下一个名字,以此类推,直到礼物完成。

gifts = ['pencil', 'pen', 'book', 'notebook', 'pencil_box', 'schoolbag', 'stick']
name = ['John', 'Marcus', 'Marie']

预期输出:

John: pencil notebook stick
Marcus: pen pencil_box 
Marie: book schoolbag

另一个例子:

gifts  = ['car', 'house', 'phone']
name = ['RichieRich']

预期输出:

RichieRich: car house phone

一些帮助?

【问题讨论】:

    标签: python python-2.7 list merge


    【解决方案1】:

    给你:

    from itertools import cycle
    from collections import defaultdict
    
    gifts = ['pencil', 'pen', 'book', 'notebook', 'pencil_box', 'schoolbag', 'stick']
    names = ['John', 'Marcus', 'Marie']
    
    gifts_by_name = defaultdict(list)
    for name, gift in zip(cycle(names), gifts):
        gifts_by_name[name].append(gift)
    
    for name in names:
        print '%s: %s' % (name, " ".join(gifts_by_name[name]))
    

    【讨论】:

      【解决方案2】:

      这可以使用 for 循环:

      count = 0 
      kids = [yourkids]
      gifts = [yourgifts]
      outputKids = kids
      for gift in gifts:
          if count > kids.length:
              count = 0;
          outputKids[count].push(gift)
          count = count + 1
      

      然后只需将您的“孩子”数组映射到您的“输出孩子”(按索引),您就有了每个孩子的礼物。

      【讨论】:

      • 抱歉,我是用 javascript 做的:P
      猜你喜欢
      • 2017-11-30
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 2017-12-04
      • 1970-01-01
      相关资源
      最近更新 更多