在二维python列表中附加值

2024-09-24 02:24:49 发布

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

我有一个python的列表

issuelist=[["k1","v1"],["k2","v2"],["k3","v1"],["k4","v2"],["k5","v2"],["k6","v3"],["k7","v1"]]

我想把这个列表的值附加到另一个列表中,这样如果值为issuelist[x][1]==issuelist[y][1],我就可以得到这样的结果

Buildlist=[["k1","k3","k7"],["k2","k4","k5"],["k6"]]

issuelist=[["k1","v1"],["k2","v2"],["k3","v1"],["k4","v2"],["k5","v2"],["k6","v3"],["k7","v1"]]
count=len(issuelist)
buildlist = [[]]* count
for i in range(len(issuelist)):
    for j in range(len(issuelist)):
        if issuelist[i][1]==issuelist[j][1]:
            buildlist[i].append(issuelist[j][0])

这是我现在试过的,但没有得到理想的结果。任何帮助都将不胜感激


Tags: 列表lencountk2k1v3v2v1
2条回答

使用itertools.groupby

例如:

from itertools import groupby

issuelist = [["k1","v1"],["k2","v2"],["k3","v1"],["k4","v2"],["k5","v2"],["k6","v3"],["k7","v1"]]
result = {k: [i[0] for i in v ]for k, v in groupby(sorted(issuelist, key=lambda x: x[1]), lambda x: x[1])}
print(result)
print(list(result.values()))

输出:

{'v1': ['k1', 'k3', 'k7'], 'v2': ['k2', 'k4', 'k5'], 'v3': ['k6']}
[['k1', 'k3', 'k7'], ['k2', 'k4', 'k5'], ['k6']]

试试这个:

from collections import defaultdict
issuelist = [["k1","v1"],["k2","v2"],["k3","v1"],["k4","v2"],["k5","v2"],["k6","v3"],["k7","v1"]]
result = defaultdict(list)
for inner_list in issuelist:
    result[inner_list[1]].append(inner_list[0])

result_array = list(result.values())
rint(presult_array)

相关问题 更多 >