python 사전 의 값(값 은 목록)할당 에 중복 되 는 문 제 를 해결 합 니 다.
3725 단어 python자전.값 을 부여 하 다
문제 설명:사전 data 가 있다 고 가정 하면 키 가 정 해 지지 않 고 수시로 키 를 추가 할 수 있 습 니 다.(이것 은 관건 이 아 닙 니 다)특정한 키 아래 에 대응 하 는 값 은 길이 가 10 인 list 이 고 0 으로 초기 화 된 다음 에 저 는 특정한 키 아래 의 목록 중의 특정한 값 을 수정 하고 싶 습 니 다.예 를 들 어 data 는 키'k'가 있 고 해당 하 는 값 은[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,지금 나 는 키'k'에 대응 하 는 목록 의 세 번 째 수 를 3 으로 바 꾸 고 싶다.즉,[0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.
구체 적 인 코드 는 다음 과 같다.
data = {}
indexes = ['new','repeat']
ret = [{'i':1,'new':3,'repeat':11},{'i':3,'new':2,'repeat':6},
{'i':4,'new':9,'repeat':2},{'i':9,'new':1,'repeat':8}]
y_axis = [0]*10
for e in ret:
for index in indexes:
if not data.has_key(index):
data[index] = y_axis
i = e['i']
for index in indexes:
data[index][i] = e[index]
print data
코드 를 알 아 보기 어렵 지 않 습 니 다.저 는 이론 적 으로 수출 해 야 한다 고 생각 합 니 다.{'new':[0,3,0,2,9,0,0,0,0,0,0,1],'repeat':[0,11,6,0,2,0,0,8],'repeat':[0,11,0,6,2,0,0,0,8],'repeat':[0,11,0,6,0,0,0,0,0,0,0,0,8].왠 지 모 르 게 디 버 깅 을 준비 하고 먼저 import pdb,pdb,끊 어야 할 앞 문장 에 pdb.set 추가trace()하면 됩 니 다.다음 과 같 습 니 다.
import pdb
data = {}
indexes = ['new','repeat']
ret = [{'i':1,'new':3,'repeat':11},{'i':3,'new':2,'repeat':6},
{'i':4,'new':9,'repeat':2},{'i':9,'new':1,'repeat':8}]
y_axis = [0]*10
for e in ret:
for index in indexes:
if not data.has_key(index):
data[index] = y_axis
i = e['i']
for index in indexes:
pdb.set_trace()
data[index][i] = e[index]
print data
이 어 python test.py,할당 data 키 에 대응 하 는 목록 의 한 값 에 대한 말:data 와 index 값 보기:
정상다음 단 계 를 실행 합 니 다.즉,할당 작업 을 실행 하고 data 값 을 봅 니 다.
여기 서 정말 mdblgl 한 마디 하고 싶 습 니 다.분명히 index 는'new'입 니 다.분명히 data[new][1]에 대한 할당 입 니 다.data[repeat][1]와 관련 된 것 입 니 다.그것 은 무엇 을 따라 변 합 니까?가히 짐작 할 수 있 듯 이 뒤에 data[repeat][1]에 값 11 을 하나 더 부여 하면'new'의 값 도 함께 변 하지 않 고 결국 마지막 에 알 수 없 는 결 과 를 얻 게 된다.
많은 방법 을 시도 해 보 았 지만 여러 가지 원인 을 생각해 보 았 습 니 다.무뢰한 은 재능 이 부족 하고 학문 이 얕 습 니 다.무슨 원리 인지 모 르 겠 습 니 다.결국 아주 어 리 석 은 방법 으로 해결 할 수 밖 에 없 었 습 니 다.
data = {}
indexes = ['new','repeat']
ret = [{'i':1,'new':3,'repeat':11},{'i':3,'new':2,'repeat':6},
{'i':4,'new':9,'repeat':2},{'i':9,'new':1,'repeat':8}]
y_axis = [0]*10
tmp = y_axis*len(indexes)
for k in range(len(indexes)):
for e in ret:
i = e['i']
tmp[i+len(y_axis)*k] = e[indexes[k]]
for k in range(len(indexes)):
data[indexes[k]] = tmp[(k*len(y_axis)):((k+1)*len(y_axis))]
print data
여기 서 왜 이런 사내 가 지적 해 주 는 지 알 고 싶 습 니 다.대단히 감사합니다!이상 python 사전 의 값(값 은 목록)할당 에 중복 되 는 문 제 를 해결 하 는 것 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 도 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.