简体   繁体   English

如何获得所有相同的“键[0]”并在字典中计算其值

[英]How to get all same 'key[0]' and calculate its value in the dictionary

counts = {'A1':3,'A2':2,'A3':1,'A4':10,'B1':11,'B2':12,'B3':3,'B4':0,'C1':3,'C2':16,'C3':8,'C4':2}


#Order grid
def orderGrid(grid):

    lst = list()
    for key,val in grid.items():
        lst.append((val,key))

    lst.sort(reverse=True)

    for val,key in lst:
        print key, val

#Order row
def orderRow(row):
    count = dict()
    for key in row.items():
        if key[0] not in count:
            count[key] = row[key]
        else:
            count[key] += row[key]
    print 'A:', count

orderGrid function can run successful, but as the orderrow function is for cluster All amount, which start from 'A', and then rank the rows ('A','B','C','D') orderGrid函数可以成功运行,但是因为orderrow函数适用于集群所有数量,从“ A”开始,然后对行进行排序(“ A”,“ B”,“ C”,“ D”)

You can use sorted and apply directly on counts 您可以使用sorted并直接应用于counts

import operator

sorted_x = sorted(counts.items(), key=operator.itemgetter(1), reverse=True)

You can take a new dict and assign key, values as follows: 您可以采用新的dict并分配键,值如下:

In [71]: mydict = {}

In [72]: for k, v in counts.items():
    ...:     if k[0] not in mydict:
    ...:         mydict[k[0]] = v
    ...:     else:
    ...:         mydict[k[0]] += v
    ...:         

In [73]: mydict
Out[73]: {'A': 16, 'B': 26, 'C': 29}

Replacing the functions would look like this, 替换功能看起来像这样,

import operator

counts = {'A1':3,'A2':2,'A3':1,'A4':10,'B1':11,'B2':12,'B3':3,'B4':0,'C1':3,'C2':16,'C3':8,'C4':2}


#Order grid
def orderGrid(grid):
    sorted_x = sorted(counts.items(), key=operator.itemgetter(1), reverse=True)
    for key,val in sorted_x:
        print key, val

#Order row
def orderRow(row):
    mydict = {}
    for k, v in row.items():
        if k[0] not in mydict:
            mydict[k[0]] = v
        else:
            mydict[k[0]] += v
    print mydict

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM