键上的dict列表的联接列表

2024-10-03 04:35:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我的清单如下:

l = [
        [{'g':'A','t':[]}, {'g':'C','t':['eaa']}, {'g':'B','t':['qe']}],
        [{'g':'A','t':[]}, {'g':'K','t':['ac']}, {'g':'B','t':['qs']}],
        [{'g':'A','t':[]}, {'g':'C','t':['ar']}, {'g':'B','t':['qdw']}],
        [{'g':'B','t':['eeq']}, {'g':'C','t':['eaa']}, {'g':'B','t':['zaa']}]
    ]

通过检查字典键'g'的相等序列,我想为每个子列表中的每个字典加入键't'上的列表:

l = [
        [{'g':'A','t':[]},{'g':'C','t':['eaa','ar']},{'g':'B','t':['qe','qdw']}],
        [{'g':'A','t':[]},{'g':'K','t':['ac']},{'g':'B','t':['qs']}],
        [{'g':'B','t':['eeq']},{'g':'C','t':['eaa']},{'g':'B','t':['zaa']}]
    ]

在每个列表中,检查键'g'-如果值相等,例如('A' 'C' 'B' and 'A' 'C' 'B'),则连接't'的值。你知道吗

我的代码是这样的

for i,j in l:
   count = 0
   if len(i) == len(j):
      for k in range(len(i)):
         if i[k]['g'] == j[k]['g']
            count += 1
            if count == len(i):
               i[k]['t'].append(j[k]['t'])
               del(j)
   else:
      continue

然后错误消息是ValueError: too many values to unpack


Tags: in列表forlenif字典countac
1条回答
网友
1楼 · 发布于 2024-10-03 04:35:53

试试这个

skip = set([])
for i in range(len(l)):
    cur = l[i]
    if i not in skip:
        for j in range(i+1, len(l)):
            new, flag = l[j], True
            for k in range(len(cur)):
                if cur[k]['g'] != new[k]['g']:
                    flag = False
                    break
            if flag:
                skip.add(j)
                for k in range(len(cur)):
                    cur[k]['t'] += new[k]['t']
for i in sorted(list(skip), reverse = True):
    l.pop(i)

在对列表、字典或其他此类集合进行迭代时,不能同时删除其中的值。这就是你的代码出错的原因。你知道吗

相关问题 更多 >