分享
三行代码  ›  专栏  ›  技术社区  ›  Sofia

切片字符串列表并填充字典值

  •  0
  • Sofia  · 技术社区  · 3 天前

    我有一个字符串列表和一个类似这样的字典:

    items_1 = [[1234,cat,air,here],[1234,cat2,air2,here2],[1234,cat3,air3,here3],[1235,dog1,rer1,type1],[1235,dog2,rer2,type2],[1235,dog3,rer3,type3]]
    

    字典={'1234':[],'1235':[]}

    我想这样做:

    items_1 = {1234:[[cat,air,here],[cat2,air2,here2],[cat3,air3,here3]],1235:[[dog1,rer1,type1],[dog2,rer2,type2],[dog3,rer3,type3]]
    

    到目前为止,我有这个代码:

    results_2=[]
    for items_keyes in dictionary.keys():
        for index, list_id in enumerate(items_1):
            if items_keyes == results[index-1][0]:
               ID_to_fill[items_keyes[-1]].append(results)
    

    但结果并不理想。有人能帮我吗?

    2 回复  |  直到 2 天前
        1
  •  0
  •   CDJB    3 天前

    这一行应提供所需的输出:

    >>> {x: [v[1:] for v in items_1 if v[0] == x] for x in set(y[0] for y in items_1)}
    {1234: [['cat', 'air', 'here'],
      ['cat2', 'air2', 'here2'],
      ['cat3', 'air3', 'here3']],
     1235: [['dog1', 'rer1', 'type1'],
      ['dog2', 'rer2', 'type2'],
      ['dog3', 'rer3', 'type3']]}
    
        2
  •  0
  •   alec_djinn    2 天前

    我会用 defaultdict .

    from collections import defaultdict
    
    d = defaultdict(list)
    for i in my_list:
        k = i[0]
        v = i[1:]
        d[k].append(v)