Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较列表python的列表元素_Python_List - Fatal编程技术网

比较列表python的列表元素

比较列表python的列表元素,python,list,Python,List,我有一个列表,需要比较所有元素的项目0和项目2。如果这些项目相等,我想将项目1和项目3相加。更清楚地说: list1 = [['diez.hn','Arts','Austria','8'], ['diez.hn','Entertainment','Austria','12']] element 0 of list1: ['diez.hn','Arts','Austria','8'] element 1 of list1: ['diez.hn','Entertainment','Austria',

我有一个列表,需要比较所有元素的项目0和项目2。如果这些项目相等,我想将项目1和项目3相加。更清楚地说:

list1 = [['diez.hn','Arts','Austria','8'], ['diez.hn','Entertainment','Austria','12']]
element 0 of list1: ['diez.hn','Arts','Austria','8']
element 1 of list1: ['diez.hn','Entertainment','Austria','12']
我需要的是:

list_ok = [['diez.hn','Arts - Entertainment','Austria','20']]
我试过这样的方法:

reader = [['diez.hn','Arts','Austria','8'], ['diez.hn','Entertainment','Austria','12']]
reader2 = [['diez.hn','Arts','Austria','8'], ['diez.hn','Entertainment','Austria','12']]
    for item in reader:
        for item2 in reader2:
            if item[0] and item[2] == item2[0] and item2[2]:
                item[1] = item[1] + item2[1]
                item[3] = item[3] + item2[3]

这种方法对列表进行排序,然后使用
itertools.groupby()
对位置0和2具有相同元素的子列表进行分组:

import itertools
import operator

list1.sort(key=operator.itemgetter(0, 2))

list_ok = []

for k, group in itertools.groupby(list1, key=operator.itemgetter(0, 2)):
    group = list(group)
    list_ok.append([
        k[0], 
        ' - '.join(item[1] for item in group), 
        k[1], 
        str(sum(int(item[3]) for item in group)), 
    ])

这种方法对列表进行排序,然后使用
itertools.groupby()
对位置0和2具有相同元素的子列表进行分组:

import itertools
import operator

list1.sort(key=operator.itemgetter(0, 2))

list_ok = []

for k, group in itertools.groupby(list1, key=operator.itemgetter(0, 2)):
    group = list(group)
    list_ok.append([
        k[0], 
        ' - '.join(item[1] for item in group), 
        k[1], 
        str(sum(int(item[3]) for item in group)), 
    ])

list1
是否总是长度为2?在尝试解决方案后,您能发布您面临的问题吗?这样做总是好的。如果项[0]==item2[0]和项[2]==item2[2]:可以吗?根据您当前的代码,您正在检查项[0]是否为
,这将尝试将其作为布尔值进行计算。如果项目[0]==item2[0]
等,则需要执行
list1
是否总是长度为2?在尝试解决方案后,您能否发布您面临的问题?这样做总是好的。如果项[0]==item2[0]和项[2]==item2[2]:
可以吗?根据您当前的代码,您正在检查项[0]是否为
,这将尝试将其作为布尔值进行计算。如果item[0]==item2[0]
等,则需要执行