在2d python列表中追加值
我有一个python的列表在2d python列表中追加值,python,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","
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])
这是我现在尝试过的,但没有得到理想的结果。任何帮助都将不胜感激使用
itertools.groupby
Ex:
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 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']]
使用
itertools.groupby
Ex:
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 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)
试试这个:
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)
这是输入=>issuelist=[“k1”、“v1”]、[“k2”、“v2”]、[“k3”、“v1”]、[“k4”、“v2”]、[“k5”、“v2”]、[“k6”、“v3”]、[“k7”、“v1”]。您希望得到什么样的输出?[“k1”、“k3”、“k7”]、[“k2”、“k4”、“k5”]、[“k6”]]这是输入=>issuelist=[“k1”、“v1”]、[“k2”、“v2”]、[“k3”、“v1”]、[“k4”、“v2”]、[“k5”、“v2”]、[“k6”、“v3”]、[“k7”、“v1”]。您期望的输出是什么?[[“k1”、“k3”、“k7”]、[“k2”、“k4”、“k5”]、[“k6”]]