2013-05-28 2 views
0

Я пытаюсь объединить записи из двух столбцов в электронной таблице в один список в python. Первая колонка содержит первого человека в каждой паре и является человеком, который задал вопрос, вопросник. Второй - это тот, кто ответил: ответчик. Я хочу список, чтобы выглядеть следующим образом:Как сопоставить скобки и форматирование запятой в списке, python

[('Jack', 'Jill'), ('Jack', 'John'), ('Jack', 'Jason'), ('Jill', 'John')...] 

Однако мой список выглядит следующим образом:

['(Jack, Jill)', '(Jack, John)', '(Jack, Jason)', '(Jack, john)'...] 

Основное различие заключается в том, что в первом списке, то кавычки на внутренней стороне круглые скобки, а во втором - снаружи.

Вот мой процесс:

answerers = line['answerers'].split(" ") 
for answerer in answerers: 
    edgelist.append("(" + line['questioner'] + ", " + answerer + ")") 

Что я должен делать по-другому, чтобы иметь кавычки на внутренней стороне, вокруг каждого человека, а не снаружи?

+0

Как определяется 'line'? – karthikr

+0

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

+0

@goldisfine вы можете разместить несколько строк. –

ответ

1

просто держать их в качестве двух отдельных списков, например asker и answerer затем сделать это

>>> asker = ['Jack','Jack','Jack','Jill'] 
>>> answerer = ['Jill','John','Jason','John'] 
>>> finalList = zip(asker, answerer) 
>>> 
>>> 
>>> finalList 
[('Jack', 'Jill'), ('Jack', 'John'), ('Jack', 'Jason'), ('Jill', 'John')] 
1
edgelist.append(( line['questioner'] ,answerer)) 

предполагая, я понимаю ваш вопрос

+0

Спасибо, Джоран, это ответ на вопрос! – goldisfine

0

Или в одной строке:

edgelist = [(line['answerer'], answerer) for answerer in answerers]