IT박스

파이썬에서 배열 / 사전 목록을 어떻게 만들 수 있습니까?

itboxs 2020. 12. 30. 07:55
반응형

파이썬에서 배열 / 사전 목록을 어떻게 만들 수 있습니까?


다음과 같은 사전이 있습니다.

{'A':0,'C':0,'G':0,'T':0}

다음과 같이 많은 사전이 포함 된 배열을 만들고 싶습니다.

[{'A':0,'C':0,'G':0,'T':0},{'A':0,'C':0,'G':0,'T':0},{'A':0,'C':0,'G':0,'T':0},...]

이것은 내 코드입니다.

weightMatrix = []
for k in range(motifWidth):
    weightMatrix[k] = {'A':0,'C':0,'G':0,'T':0}

그러나 물론 작동하지 않습니다. 누군가 나에게 힌트를 줄 수 있습니까? 감사.


이것이 내가 한 방법이며 작동합니다.

dictlist = [dict() for x in range(n)]

n 개의 빈 사전 목록을 제공합니다.


weightMatrix = [{'A':0,'C':0,'G':0,'T':0} for k in range(motifWidth)]

사용하다

weightMatrix = []
for k in range(motifWidth):
    weightMatrix.append({'A':0,'C':0,'G':0,'T':0})

목록 생성자를 사용하여 user1850980의 답변 ( "빈 사전 목록을 초기화하는 방법"질문에 대한)의 사소한 변형 :

dictlistGOOD = list( {} for i in xrange(listsize) )

나는 내 우울함을 알았는데 이것은 작동하지 않습니다.

dictlistFAIL = [{}] * listsize  # FAIL!

동일한 빈 사전 에 대한 참조 목록을 생성하므로 목록에서 하나의 사전을 업데이트하면 다른 모든 참조도 업데이트됩니다.

차이점을 확인하려면 다음 업데이트를 시도하십시오.

dictlistGOOD[0]["key"] = "value"
dictlistFAIL[0]["key"] = "value"

(실제로 질문에 대한 user1850980의 답변을 찾고 있었기 때문에 답변이 도움이되었습니다.)


motifWidth정수 포함되어 있다고 가정합니다 .

Python에서 목록은 사용자가 지시하지 않는 한 크기를 변경하지 않습니다. 따라서 Python은 존재하지 않는 요소를 변경하려고 할 때 예외를 발생시킵니다. 나는 당신이 원한다고 믿는다 :

weightMatrix = []
for k in range(motifWidth):
    weightMatrix.append({'A':0,'C':0,'G':0,'T':0})

나중에 질문 할 때 "작동하지 않습니다"라고 말하는 것보다 발생한 오류를 보여주는 스택 추적을 포함하면 도움이 될 것입니다. 그러면 코드에서 문제를 해결하는 대신 문제의 원인을 직접 파악하는 데 도움이됩니다.

도움이 되었기를 바랍니다.


이 시도:

lst = []
##use append to add items to the list.

lst.append({'A':0,'C':0,'G':0,'T':0})
lst.append({'A':1,'C':1,'G':1,'T':1})

##if u need to add n no of items to the list, use range with append:
for i in range(n):
    lst.append({'A':0,'C':0,'G':0,'T':0})

print lst

사전:

dict = {'a':'a','b':'b','c':'c'}

사전 배열

arr = (dict,dict,dict)
arr
({'a': 'a', 'c': 'c', 'b': 'b'}, {'a': 'a', 'c': 'c', 'b': 'b'}, {'a': 'a', 'c': 'c', 'b': 'b'})

참조 URL : https://stackoverflow.com/questions/2397754/how-can-i-create-an-array-list-of-dictionaries-in-python

반응형