python - 在 2d 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","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

例如:

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']]

关于python - 在 2d python 列表中附加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56253004/

相关文章:

python / split : How to find and select an option on a site?

python - 为什么描述符(在Python中)不能插入(放置)到已经初始化的对象中?

python - 检查 DataFrame 中的循环引用 (Python)

python - 在 matplotlib 中的绘图上叠加 lineCollection - 如何让两者对齐。

python - 如何在 python 中获取驱动器的名称

python - tzinfo=tzutc() 是否与+00 :00 in python? 相同

python - 记住方法调用之间的状态

python - Jupyter + EMR + Spark - 从本地机器上的 Jupyter notebook 连接到 EMR 集群

python - 如何制作一个背景颜色为用户选择的颜色的标签?

python - Socket.py权限错误