파이썬 for문 배열안에 다른 배열 값 넣기.
조회수 2862회
aa.py
records1 = [(a,1),(b,2),(c,3)]
records2 = [(a1,4)]
# records1의 개수만큼 각 배열 값 에 records2 값을 넣음.
i = 0
while i < len(records1):
records1[i].append(records2)
i = i + 1
에러:AttributeError: 'tuple' object has no attribute 'append
records1의 각 배열 값 에 records2 값을 넣으려고 하는데, append 타입이 안된다고 하는거 같아요. 다른 방법으로 찾아봤는데 잘 안됬습니다.ㅠ
최종 적으로 dict로 json 형태로 만드려고 하는데, 조언 해주시면 감사하겠습니다.
최종 결과.
records1=[(a,1,(a1,4)),(b,2,(a1,4)),(c,3,(a1,4))]
jsonify(dict(records1))
{
{
"a":1,
{
"a1":4
}
},
{
"b":2,
{
"a1":4
}
},
{
"c":3,
{
"a1":4
}
}
}
제가 질문을 잘 못했던거 같아 추가 했어요.
records1 = [(("a",1),("b",2),("c",3),("a1",4)),(("a",1),("b",2),("c",3),("a1",4))]
records2 = [(("bb",2),("cc",3),("aa1",4))]
records3 = [(("aa",1),("bb",2),("cc",3),("aa1",4))]
이런 구조가 될거 같아요.
aa=[dict(record) for record in records1]
print(aa)
[{'a': 1, 'a1': 4, 'c': 3, 'b': 2, **이곳에 records2 삽입**, **이곳에 records3 삽입**}, {'a': 1, 'a1': 4, 'c': 3, 'b': 2, }]
aa = [{'a': 1, 'b': 2, 'c': 3, 'a1': 4,
"records2":[{'cc': 3, 'aa1': 4, 'bb': 2}], "records3":[{'aa': 1, 'cc': 3, 'aa1': 4, 'bb': 2}] }]
--------------------------------------------------------
[
{
"a": 1,
"a1": 4,
"b": 2,
"c": 3,
"records2": [
{
"aa1": 4,
"bb": 2,
"cc": 3
}
],
"records3": [
{
"aa": 1,
"aa1": 4,
"bb": 2,
"cc": 3
}
]
},
.......
]
계속 코딩 해보고 있는 중이라서.. 일단 올려봤어요..
awe=[r + (records2,) for r in records1]
dict(record) for record in awe
[{'a': 1, 'a1': 4, 'c': 3, 'b': 2, (('bb', 1), ('bb', 2), ('cc', 3), ('aa1', 4)): (('aa', 1), ('bb', 2), ('cc', 3), ('aa1', 4))}, {'a': 1, 'a1': 4, 'c': 3, 'b': 2, (('bb', 1), ('bb', 2), ('cc', 3), ('aa1', 4)): (('aa', 1), ('bb', 2), ('cc', 3), ('aa1', 4))}]
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
In [1]: [r + (records2[0],) for r in records1] Out[1]: [('a', 1, ('a1', 4)), ('b', 2, ('a1', 4)), ('c', 3, ('a1', 4))] In [2]: [r + (*records2,) for r in records1] Out[2]: [('a', 1, ('a1', 4)), ('b', 2, ('a1', 4)), ('c', 3, ('a1', 4))]
json 은 유효하지 않은 듯 합니다.
하려는 것이 무엇인지...명확해야 합니다.
- 답변 감사합니다. 중간에 records1=zip(records1)으로 감싸준 후, [(('a', 1), [('a1', 4)]), (('b', 2), [('a1', 4)]), (('c', 3), [('a1', 4)])] 이형태로 만들어서 dict 하면, 소괄호당 하나씩 해서((a : 1), [(a1 : 4)]) 이렇게 key:value 매핑 되는지 알고있었는데, 그게 아니라 (('a', 1) : [('a1', 4)]) 이런식으로 되더라고요, 제가 잘못이해하고 있었네요ㅠ 알 수 없는 사용자 2018.11.29 09:55
- 소괄호 하나씩 찾아가서 dict 해줘야 할거 같은데, 맨붕이네요ㅠ 알 수 없는 사용자 2018.11.29 09:58
- 원하는 결과가 무엇이에요? json 은 문법에 맞지 않아요. 정영훈 2018.11.29 10:34
- records1 안에 records2 를 넣는 건데, 제가 질문을 잘 못했던거 같아요.. 질문수정을 했는데, 답변해주신 방법으로 하니까 records1 앞부분은 key,value형태인데, 뒤쪽 추가된부분은 제가 다시 손봐야 할거 같아요. 알 수 없는 사용자 2018.11.29 11:45
- records1을 dict으로 변환하면 변환된 records1 안에 리스트records2를 넣을 수 없는 거 같고, records2를 dict으로 변환 후 records1에 넣어도, dict 변환된 records2가 있어서 안되는 거 같아요.. 다른 방법이 없을까요? 알 수 없는 사용자 2018.11.29 13:20
-
최대한 끊어서 코딩했으니 하나씩 보면 될겁니다.
records1 = [(("a",1),("b",2),("c",3),("a1",4)),(("a",1),("b",2),("c",3),("a1",4))] records2 = [(("bb",2),("cc",3),("aa1",4))] records3 = [(("aa",1),("bb",2),("cc",3),("aa1",4))] m_r3 = [dict((n, m) for n, m in r) for r in records3] m_r2 = [{n: m for n, m in r} for r in records2] # 이렇게도 할 수 있습니다. m_r1 = [r + (('records2', m_r2), ('records3', m_r3),) for r in records1] result = [{n: m for n, m in r} for r in m_r1] m_r2 Out[86]: [{'bb': 2, 'cc': 3, 'aa1': 4}] m_r3 Out[87]: [{'aa': 1, 'bb': 2, 'cc': 3, 'aa1': 4}] m_r1 Out[88]: [(('a', 1), ('b', 2), ('c', 3), ('a1', 4), ('records2', [{'bb': 2, 'cc': 3, 'aa1': 4}]), ('records3', [{'aa': 1, 'bb': 2, 'cc': 3, 'aa1': 4}])), (('a', 1), ('b', 2), ('c', 3), ('a1', 4), ('records2', [{'bb': 2, 'cc': 3, 'aa1': 4}]), ('records3', [{'aa': 1, 'bb': 2, 'cc': 3, 'aa1': 4}]))] result Out[90]: [{'a': 1, 'b': 2, 'c': 3, 'a1': 4, 'records2': [{'bb': 2, 'cc': 3, 'aa1': 4}], 'records3': [{'aa': 1, 'bb': 2, 'cc': 3, 'aa1': 4}]}, {'a': 1, 'b': 2, 'c': 3, 'a1': 4, 'records2': [{'bb': 2, 'cc': 3, 'aa1': 4}], 'records3': [{'aa': 1, 'bb': 2, 'cc': 3, 'aa1': 4}]}]
- 계속 찿아보니까 dict.update 로 dict 끼리 연결 해주는 게 있어서 이것 저것 해보다가 코딩 한페이지 넘게 하고 있었는데, 4줄 만에 되는거 보니까 정말 신기하네요. 감사합니다. 알 수 없는 사용자 2018.11.30 09:31
댓글 입력