我需要根据俱乐部号码按顺序输出这些存款。看看存款中的第一项(0434512)。前两位数代表俱乐部号码(在这种情况下是俱乐部号码04)。其余数字表示对账户的存款(34512)。这需要四舍五入,因此应输出为4 $ 345.12
deposits = ["0434512", "03145234", "012341347", "0511112345", "0475746","03654534", "02112"]
deposits.sort()
for i in deposits:
print i[1],
print int(i[2:])/100.
1 23413.47
2 1.12
3 1452.34
3 6545.34
4 345.12
4 757.46
5 111123.45
我以为我已经完成了这件事但事实证明我需要将存款添加到同一个俱乐部。所以我需要将1452.34和6545.34加在一起,并与俱乐部4相同。
提前致谢!
答案 0 :(得分:3)
我认为您应该将您的分会号码转换为int,但基于您的代码的解决方案可以是这样的
from collections import defaultdict
deposits = ["0434512", "03145234", "012341347", "0511112345", "0475746", "03654534", "02112"]
summary = defaultdict(float)
for i in deposits:
summary[i[:2]] += int(i[2:])/100.
#sort by club number
sorted_summary = sorted(summary.items(), key=lambda item: item[0])
for key, value in sorted_summary:
print key, value
#1 23413.47
#2 1.12
#3 7997.68
#4 1102.58
#5 111123.45
答案 1 :(得分:1)
您可以使用字典:
deposits = ["0434512", "03145234", "012341347", "0511112345", "0475746","03654534", "02112"]
deposits.sort()
from collections import OrderedDict
mydict = OrderedDict()
for i in deposits:
mydict[i[:2]] = 0
for i in deposits:
mydict[i[:2]] += float(i[2:])/100
输出:
>>> for i,j in mydict.items():
print(i,j)
01 23413.47
02 1.12
03 7997.68
04 1102.58
05 111123.45
Python 2:
>>> for i,j in mydict.iteritems():
print i,j
01 23413.47
02 1.12
03 7997.68
04 1102.58
05 111123.45
OrderedDict
用于保持俱乐部的数量顺序。
以下是您可能感兴趣的一些链接:Dictionaries,OrderedDict
mydict = OrderedDict
创建一个名为mydict
的有序词典。
for i in deposits:
mydict[i[:2]] = 0
然后,此for
循环使用deposits
中每个条目中的前2个字符创建密钥。即俱乐部号码。它为每个俱乐部提供0
的价值。
for i in deposits:
mydict[i[:2]] += float(i[2:])/100
第二个for
循环遍历deposits
,并将第二个字符后面的所有内容添加到mydict
中相应的键值。这只能起作用,因为字典不能有2个具有相同名称的键。
我希望这可以帮助你理解。一旦你理解了字典的工作方式,它就相对简单了。