반복문으로 리스트 내 딕셔너리 생성을 어떻게 해야할까요?
조회수 674회
안녕하세요 파이썬 공부하는 학생입니다. 독학하다가 궁금한점이 생겨서 질문 남깁니다.
[이름, 나이, 지역]
[A, B, C]
[20, 21, 22]
[서울, 대전, 부산]
이런 리스트들을 딕셔너리로 묶고 싶은데요,
[{이름:A, 나이:20, 지역: 서울}, {이름:B, 나이:21, 지역: 대전}, {이름:C, 나이:22, 지역:부산}]
이런 아웃풋으로 만들려면 어떻게 만들어야 할까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
방법은 여러가지가 있습니다.
파이썬은 시퀀스형태의 자료구조에 대해서 일관성 있게 대합니다.
쉽게 말해서 파이썬에서는 문자열, 배열, 리스트, 데이터베이스 결과 등등 이런 시퀀셜한 형태는 동일하게 반복, 슬라이싱, 연결 등을 처리할 수 있습니다.
어떤 측면에서는 함수형 프로그래밍 같이 데이터 집합이 있다면 '자르고' '붙이는' 함수들을 합성해서 프로그래밍을 할 수 있다는 겁니다.
정리하면 파이썬으로 프로그래밍 할 때는 데이터를 집합으로 만들어서 사고하도록 하면 좀 더 간결하게 프로그래밍 할 수 있습니다.
- 기본 모듈인 collections 의 namedtuple 을 사용한 방법
a = ['이름', '나이', '지역'] b = ['A', 'B', 'C'] c = [20, 21, 22] d = ['서울', '대전', '부산'] from collections import namedtuple user = namedtuple('user', a) [user(*record)._asdict() for record in zip(b, c, d)] [OrderedDict([('이름', 'A'), ('나이', 20), ('지역', '서울')]), OrderedDict([('이름', 'B'), ('나이', 21), ('지역', '대전')]), OrderedDict([('이름', 'C'), ('나이', 22), ('지역', '부산')])]
- pandas 를 활용한 방법
import pandas as pd pd.DataFrame(columns=a, data=zip(b, c, d)).to_dict('records') [{'이름': 'A', '나이': 20, '지역': '서울'}, {'이름': 'B', '나이': 21, '지역': '대전'}, {'이름': 'C', '나이': 22, '지역': '부산'}]
- 기본모듈인 sqlite 를 활용한 방법
import sqlite3 conn = sqlite3.connect(":memory:") conn.row_factory = sqlite3.Row conn.execute("create table user('{}', '{}', '{}')".format(*a)) for record in zip(b, c, d): conn.execute("insert into user values(?, ?, ?)", record) [dict(record) for record in conn.execute("select * from user").fetchall()] conn.close() [{'이름': 'A', '나이': 20, '지역': '서울'}, {'이름': 'B', '나이': 21, '지역': '대전'}, {'이름': 'C', '나이': 22, '지역': '부산'}]
댓글 입력