2013-12-06 8 views
0
reads = { '1': 'A', '2': 'B', '3': 'C', '4': 'D', '5': 'E', '6': 'F' }` 
readOrder = ['1', '2', '3', '4', '5', '6']` 

Как я могу перебрать строки, как в readOrder:Перебор строк в списке в питона

a = [] 
for i in readOrder(): 
    a.append(reads[i],reads[i+1]) 

''.join(a) 

print a 

Так что я могу получить:

'ABBCCDDEEF' 

Этот способ работает, но там должно быть простой способ сделать это с помощью петли, я думаю:

a = [reads[0] + reads[1], reads[1] + reads[2], 
    reads[2] + reads[3], reads[3] + reads[4]] 
print ''.join(a) 
+0

Итак, вы хотите взять словарь и сделать строку со всеми его ключами в два раза за исключением первого и последнего? – Ryan

+0

Я просто использую его для примера. Идея состоит в том, чтобы перебрать список, который может принимать элемент и элемент после этого. Это достаточно просто для чисел, и я хочу, чтобы он был достаточно простым для строк :) – donstone666

+1

Ну, я больше не могу публиковать ответ, поэтому мое решение было: ''. .join ([reads.get (i, "") + reads.get (str (int (i) +1), "") для i в readOrder]) ' – Roberto

ответ

-1

Может быть, что-то вроде этого? (Пересмотренная строк)

#!/usr/local/cpython-2.7/bin/python 

reads = { '1': 'A', '2': 'B', '3': 'C', '4': 'D', '5': 'E', '6': 'F' } 

readOrder = ['1', '2', '3', '4', '5', '6'] 

a = [] 
for indexno, index_str in enumerate(readOrder[:-1]): 
    index_str_p1 = readOrder[indexno + 1] 
    a.append(reads[index_str]) 
    a.append(reads[index_str_p1]) 

print a 
print ''.join(a) 
+0

Хорошо, почему downvote? Вы могли бы хотя бы кратко прокомментировать, что с ним не так. Он дает точно результат, запрошенный OP. – dstromberg

0
a = [] 
for i,key in enumerate(readOrder): 
a.append(reads[key]) 
if i != 0 and i != len(readOrder) - 1: 
    a.append(reads[key]) 
''.join(a) 
Смежные вопросы