파이썬으로 리스트 값 서로 짝지우는 방법

92 views
Skip to first unread message

hkha...@gmail.com

unread,
Jun 16, 2013, 5:50:07 AM6/16/13
to pyt...@googlegroups.com
파이썬으로 컴퓨터 언어 처음 배우기 시작한 왕초보입니다.

사회관계망 분석을 위해서 데이터를 만들려고 하는데 간단한 코딩이 필요합니다.

다음과 같은 csv 화일 데이터가 있다고 치고 여기서 같은 행에 있는 사람들은 두명씩 모두 서로 짝지워서 아래로 쭉 나열하려고 합니다.


김철수, 이진상, 김종국, 정인수
이민진, 강희영, 이선주
김하인, 이만진, 하인상,김순자


말하자면 위의 데이터에서 같은 행에 있는 사람들은 동일한 행사에서 한번 씩 인연을 맺은 것으로 간주해 서로 한번씩 쌍을 만드는 것입니다.
결과물은 다음과 같은 형태가 되야 합니다. 사회관계망 분석에서 이것을 edge list라고 합니다.


김철수, 이진상
김철수, 김종국
김철수, 정인수
이진상, 김종국
이진상, 정인수
김종국, 정인수
이민진, 강희영
이민진, 이선주
강희영, 이선주
김하인, 이만진
김하인, 하인상
김하인, 김순자
이만진, 하인상
이만진, 김순자
하인상, 김순자


이런 데이터를 생성하기 위해 파이썬으로 간단히 코딩하려면 어떻게 하면 될 까요?




HoChul Shin

unread,
Jun 21, 2013, 3:23:21 AM6/21/13
to hkha...@gmail.com, Python 3 질문 게시판
다음과 같이 set를 이용하면 간단합니다.

<temp.py>
cache = []
names = "a,b,c,d".split(',')
for n in names:
for m in names:
if n==m: continue
a = {n,m}
if a not in cache:
cache.append(a)
print a

$ python temp.py 
set(['a', 'b'])
set(['a', 'c'])
set(['a', 'd'])
set(['c', 'b'])
set(['b', 'd'])
set(['c', 'd'])


2013년 6월 16일 오후 6:50, <hkha...@gmail.com>님의 말:




--
Google 그룹스 'Python 3 질문 게시판' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 python3+u...@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 pyt...@googlegroups.com(으)로 이메일을 보내세요.
http://groups.google.com/group/python3에서 그룹을 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/groups/opt_out을(를) 방문하세요.
 
 



--
-----------------------------
http://dsphome.net/
Reply all
Reply to author
Forward
0 new messages