我有一组值,tgat表示邮政编码中的平均人数。这些是pcode1 = 239
、pcode2 = 245
、pcode3 = 210
和pcode4 = 217
,现在我被卡住了。我假设平均值是allpcode = 220
。
有没有办法用python写一段代码,这样我就可以把每个单独的pcode与总平均值进行比较?我想要做的是,比较pcode1
和allpcode
,如果pcode1
高于/低于allpcode
,则显示pcode1
的平均值,并表示pcode1
低于allpcode
或高于allpcode
。然后,我想对所有其他pcode重复:)
我想在屏幕上显示所有较低的平均值和所有较高的平均值。
所以类似于pcode 3和4的平均值低于所有pcode平均值,而pcode 1和2高于所有p代码。
有没有可能创建这样的代码,因为我不知道如何开始/从哪里开始?
发布于 2013-05-29 01:06:23
在这种情况下,您经常希望迭代一组值中的所有值,通常最好使用单个list
、dict
或其他集合变量,而不是一堆单独的变量。例如:
pcodes = {1: 239, 2: 245, 3: 210, 4: 217}
现在,您可以像这样编写代码:
pcodes = {1: 239, 2: 245, 3: 210, 4: 217}
allpcode = 220
for pcode, value in pcodes.items():
if value < allpcode:
print('code {} is lower than allpcode'.format(pcode))
elif value > allpcode:
print('code {} is higher than allpcode'.format(pcode))
如果你真的想要有独立的变量,你必须做更多的工作,如下所示:
pcode1 = 239
pcode2 = 245
pcode3 = 210
pcode4 = 217
allpcode = 220
for i, value in enumerate((pcode1, pcode2, pcode3, pcode4)):
if value < allpcode:
print('code {} is lower than allpcode'.format(i + 1))
elif value > allpcode:
print('code {} is higher than allpcode'.format(i + 1))
发布于 2013-05-29 01:07:14
如果您只想匹配值,则可以使用列表:
>>> pcode1 = 239
>>> pcode2 = 245
>>> pcode3 = 210
>>> pcode4 = 217
>>> lis = [pcode1, pcode2, pcode3, pcode4]
>>> allpcode= 220
>>> for i,x in enumerate(lis):
if x < allpcode:
print "pcode{} is less than {}".format(i+1,allpcode)
elif x > allpcode:
print "pcode{} is greater than {}".format(i+1,allpcode)
...
pcode1 is greater than 220
pcode2 is greater than 220
pcode3 is less than 220
pcode4 is less than 220
最好使用字典:
因为变量只是对python中的值的引用,所以你不能访问变量名。如果你有很多pcodes
,那么为每一个都定义一个变量不是解决这个问题的好方法,使用字典会更简洁。
#create dictionary with keys named pcode1, pcode2,...
>>> dic = {'pcode1':239, 'pcode2':245, 'pcode3':210, 'pcode4':217}
>>> for k,v in dic.items():
if v < allpcode:
print "{} is less than {}".format(k ,'allpcode')
elif v > allpcode:
print "{} is greater than {}".format(k,'allpcode')
...
pcode3 is less than allpcode
pcode2 is greater than allpcode
pcode1 is greater than allpcode
pcode4 is less than allpcode
尽管字典不维护任何顺序,但您可能必须在此处使用collections.OrderedDict
或sorted
来获取特定顺序的键。
https://stackoverflow.com/questions/16803841
复制相似问题