2016-10-28 3 views
0

私はこのリストのすべての数字をそれの前の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

は 'dict'、または[' collections.OrderedDictを使用する価値があるMigth '](https://docs.python.org/2/library/collections.html#collections.OrderedDict)を使用してください。 –

答えて

1

split,intおよびzipを使用できます。 のは、あなたのリスト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.values()を使用して、あなたがキーにアクセスすることができd.keys()を使用します。そのため、例えば、この(のpython 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]) 
関連する問題