如何得到所有相同的 'key[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函数可以运行成功,但是orderrow函数是针对cluster All amount,从'A'开始,然后对行进行排序('A','B','C','D')
您可以使用sorted
直接申请counts
import operator
sorted_x = sorted(counts.items(), key=operator.itemgetter(1), reverse=True)
你可以取一个新的dict
并分配key,值如下:
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
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函数是针对cluster All amount,从'A'开始,然后对行进行排序('A','B','C','D')
您可以使用sorted
直接申请counts
import operator
sorted_x = sorted(counts.items(), key=operator.itemgetter(1), reverse=True)
你可以取一个新的dict
并分配key,值如下:
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