2016-10-28 19 views
0

我试图比较列表中的每个数字与1以及它后面的1。 例如:我列出了参与者= [“A:1”,“B:6”,“C:5”,“D:4”,“E:7”,“F:3”,“G: 10“,”H:2“] 现在我想比较B:6与A:1和C:5的数量,但我不知道自从A,B和C仍然存在,我需要以保留它们以备后用。试图比较列表中的每个数字与其1以及其后的1列表

+0

Migth值得使用一个'dict'或['collections.OrderedDict '](https://docs.python.org/2/library/collections.html#collections.OrderedDict)如果维护顺序非常重要。 –

回答

1

您可以使用split,intzip。 让我们命名列表l

for previous, current, next in zip(l[:-2], l[1:-1],l[2:]): 
    nums = [int(x.split(':')[1]) for x in [previous, current, next]] 
    # now do your comparison... 
+0

谢谢:) 这有助于分配! –

0

使用的collections.OrderedDict,如果你需要维持秩序,但要适当分开键和值。优点是您有一个适当的键值存储您的值,但您仍然保持添加值的顺序,如list

from collections import OrderedDict 
participants = ["A:1", "B:6", "C:5", "D:4", "E:7", "F:3", "G:10", "H:2"] 
d = OrderedDict() 
for p in participants: 
    letter, number = p.split(':') 
    d.update({letter:int(number)}) 

使用d.keys()可以访问键,使用d.values()您可以访问值。因此,例如,要打印所有号码前一个的差异,做这样的事情(蟒蛇2码):

from __future__ import print_function # necessary for print() in py2.* 
for prev, next in zip(d.keys()[:-1], d.keys()[1:]): 
    print(next, "-", prev, "=", d[next] - d[prev]) 
相关问题