python - 对嵌套元组的内容进行分组

标签 python python-2.7

请任何人帮我解决下面的代码片段

lst1 = [('1','2',{"v" : 5, "a" : 3}),('7','9',{"v" : 7, "a" : 3}),('3','4',{"v" : 4, "a" : 3}),('1','6',{"v" : 0, "a" : 3}),('2','9',{"v" : 4, "a" : 3})]

lst2 = [[('1','2'),('2','9')], [('1','6'),('7','9')]]
vol = [] 

for elem in lst2:
    for sub_e in elem:
        for l in lst1:
            if  l[0:2] == sub_e:
                vol.append(l[2]["v"])

给出输出:

[5, 4, 0, 7]

但是有没有办法重写它,使输出如下:

[[5, 4], [0, 7]]

谢谢

最佳答案

您可以按如下方式进行:

lst1 = [('1','2',{"v" : 5, "a" : 3}),('7','9',{"v" : 7, "a" : 3}),('3','4',{"v" : 4, "a" : 3}),('1','6',{"v" : 0, "a" : 3}),('2','9',{"v" : 4, "a" : 3})]

lst2 = [[('1','2'),('2','9')], [('1','6'),('7','9')]]
vol = [] 

for i,elem in enumerate(lst2):             #changed to enumerate
    vol.append([])                         #added empty list for each outer loop
    for sub_e in elem:
        for l in lst1:
            if  l[0:2] == sub_e:
                vol[i].append(l[2]["v"])   #changed vol to vol[i]

>>> print vol
[[5, 4], [0, 7]]

关于python - 对嵌套元组的内容进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23421778/

相关文章:

Python:ftplib和os Errno13(从ftp服务器下载所有文件)

python - 在定义的时间后退出 LLDB session

python - TensorFlow 不更新权重

python - 使用 Python 查找最佳拟合参数

python 2.7 : Appending to a list value of a dictionary key

python - 如何运行协程而不等待它?

python-2.7 - Pandas DataFrame用无替换NaT

python-2.7 - 更改 IP 地址的最后八位字节

python - 在 Pandas 数据框中的两列之间传输值

python - 接受一个字符串并返回 8 个字符的字符串列表的函数