在列表中添加两个项目以生成一个项目

时间:2016-04-06 17:53:54

标签: python python-2.7 python-3.x

我需要根据俱乐部号码按顺序输出这些存款。看看存款中的第一项(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相同。

提前致谢!

2 个答案:

答案 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用于保持俱乐部的数量顺序。

以下是您可能感兴趣的一些链接:DictionariesOrderedDict

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个具有相同名称的键。

我希望这可以帮助你理解。一旦你理解了字典的工作方式,它就相对简单了。