我从键值对列表中找到最大值和最小值。为此,我为循环代码写了这个:
for key, values in groups.iteritems():
MaxY = max(values)
print 'Maximum Value of Y ='
print MaxY
MaxX = max(values)
print 'Maximum Value of X ='
print MaxX
MaxZ = max(values)
print 'Maximum Value of Z ='
print MaxZ
我想要这样的输出:
Y =
的最大值X =
的最大值Z =
的最大值但是这样打印三次:
Maximum Value of Y =..
Maximum Value of X =..
Maximum Value of Z =..
Maximum Value of Y =..
Maximum Value of X =..
Maximum Value of Z =..
Maximum Value of Y =..
Maximum Value of X =..
Maximum Value of Z =..
我希望MaxX,MaxY,MaxZ中的值为最大值。
答案 0 :(得分:3)
您正在打印max(values)
每次循环迭代,3次。因此,对于X
,您打印max(values)
三次,然后再次为Y
执行此操作,再为Z
再次执行。
每次迭代打印最多只一次,然后打印密钥而不是硬编码:
for key, values in groups.iteritems():
valuemax = max(values)
print 'Maximum Value of', key, '='
print valuemax
换句话说,将重复留在循环中;这就是它的用途。
如果您想存储这些maximi,请使用新词典:
maximi = {}
for key, values in groups.iteritems():
valuemax = max(values)
print 'Maximum Value of', key, '='
print valuemax
maximi[key] = valuemax
不要尝试根据键设置新的局部变量;保护您的数据不受变量名称的影响。
答案 1 :(得分:1)
一个简单的解决方案是
MaxX = max(float(b) for (a, b) in groups if a == 'X')
MaxY = max(float(b) for (a, b) in groups if a == 'Y')
MaxZ = max(float(b) for (a, b) in groups if a == 'Z')
...但这需要迭代groups
三个项目。效率不高。
答案 2 :(得分:0)
data = [('X', '62.811'), ('Y', '23.073'), ('Z', '231.341'), ('X', '78.351')]
dict_data = {}
for key, value in data:
value = float(value)
if key in dict_data:
dict_data[key].append(value)
else:
dict_data[key] = [value]
max_data = {key: max(values) for key, values in dict_data.items()}
>>> max_data['X']
78.351
>>> max_data['Y']
23.073
>>> max_data['Z']
231.341