2017-04-02 74 views
0
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功能可以运行成功计算出它的价值,但由于orderrow功能对于集群中的所有金额,从“A”开始,然后排名行( 'A', 'B', 'C', 'd')如何获得所有相同的“键[0]”,并在字典

+0

什么是你想要的输出? – manvi77

+0

@ manvi77 like,{A-row:16,B-row:26 ...} – hsbzzhz

回答

0

您可以使用sorted并直接在counts

import operator 

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

应用可以采取一种新的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} 

更换功能是这样的,

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 
相关问题