에 가치를 지정한 목록에서 파이썬과 값의 합계

0

질문

이 운동에서는 python,나는 사용할 수 없습니다 팬더는 그냥 내장 python 능합니다. 이 목록:

 ['a', 1],
 ['b', 1],
 ['a', 2],
 ['a', 2],

출력해야는 다음과 같다:

 ['a', 5],
 ['b', 1],

이 코드는 지금까지,그러나 저는 기본적으로 같은 목록이다.

result = []

for x,y in list_data:
    if x not in result: 
        result.append([x, int(y)])
    else:
        result[1] += int(y) 
result
built-in function list python
2021-11-24 02:37:03
4

최고의 응답

1

을 만들 수 있 사전를 계산 합계 및 그런 다음 다시 변환하 목록:

data = [['c', 2], ['a', 1], ['b', 1], ['a', 2], ['a', 2], ['c', 3]]

totals = {} # could use collections.defaultdict for this part
for k, v in data:
    totals[k] = totals.get(k, 0) + v
print(totals) # {'c': 5, 'a': 5, 'b': 1}
output = [[k, v] for k, v in totals.items()]
# or, output = list(map(list, totals.items()))
# or, output = list(totals.items()) # if you are fine with a list of tuples
print(output) # [['c', 5], ['a', 5], ['b', 1]]

# if you want the output to be sorted alphabetically
output = sorted(output, key=lambda lst: lst[0])
print(output) # [['a', 5], ['b', 1], ['c', 5]]
2021-11-24 02:50:31

그것이 작동할 수 있게 되었습니다 어떻게 정렬하는 항목을 알파벳순으로
Luis Alejandro Vargas Ramos

@LuisAlejandroVargasRamos 지 않다 그것은 이미 정?
j1-lee

@LuisAlejandroVargasRamos 한 추가 정렬 부분에 코드의 끝으로,새로운 항목 포함 c 에서의 입력이 있습니다.
j1-lee
1

One-liner:

import itertools

[[x[0], sum([value[1] for value in x[1]])] for x in itertools.groupby(sorted(list_data), lambda i: i[0])]

상세정보:

[[x[0], sum([value[1] for value in x[1]])] for x in itertools.groupby(sorted(list_data), lambda i: i[0])]
                                                                      sorted(list_data)                    # sort the list alphabetically
                                                    itertools.groupby(sorted(list_data), lambda i: i[0])   # group by the "key"
                                                                                                           # result: [('a', <itertools._grouper object at 0x000001D6B806F700>), ('b', <itertools._grouper object at 0x000001D6B806F310>)]
  x[0]                                     for x in                                                        # ['a', 'b']
            [value[1] for value in x[1]]   for x in                                                        # [[1, 2, 2], [1]]
        sum([value[1] for value in x[1]])  for x in                                                        # [5, 1]
  x[0], sum([value[1] for value in x[1]])  for x in                                                        # [['a', 5], ['b', 1]]
2021-11-24 02:43:18
0

사전은 가장 좋습에 대한 귀하의 작업입니다.

data = [['a', 1], ['b', 1], ['a', 2], ['a', 2]]
d = {}
for key, value in data:
    d[key] = value + (d[key] if key in d else 0)
# generate list of tuples and sort
out = sorted(d.items())
print(out)
2021-11-24 02:50:46
0

그것은 당신의 생각을 목록으로는 강력한 소프트웨어입니다. 에 대한 코드를 작동을 찾을 필요가 결과는 인덱스를 추가할 가치(생[1]).

하지만 변경할 경우에 결과를 사전에 당신을 유지할 수 있는 거의 동일한 코드:

result = dict() # or result = {}
for x,y in list_data:
    if x not in result: 
        result[x] = int(y)
    else:
        result[x] += y

print(result)

Out[1]: {'a': 5, 'b': 1}

는 경우를 갖고 싶은 목록이 사용할 수 있습니다:

result_list = []
for x,y in result.items():
    result_list.append([x,y])
    
print(result_list)
[['a', 5], ['b', 1]]
2021-11-24 02:56:01

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................