>source

JSON으로 된 목록의 문자열을 업데이트할 때마다 변수를 통하지 않고 직접 업데이트할 수만 있습니다. 직접 해보는 것이 가장 좋습니다. 이 프로그램은 사용자 입력을 보고 새로운 답변이고 사용자의 주소가 목록에 없으면 주소에 추가합니다. 사용자의 IP가 목록에 있으면 이전 답변을 새 답변으로 덮어씁니다.

문제를 복제하려면 다음 줄을 교체하십시오.

data["answers_dict"]["0"][index]= new_answer + '|' + 주소이것으로:data_indexed= new_answer + '|' + 주소

왜 이런 일이 발생합니까? 모든 것은 가변 스왑입니다.

작동하는 code는 다음과 같습니다.

import json
new_answer= '4_div'
file_dir= 'Data/test_answers_database.json'
with open(file_dir,'r+') as file:
        data= json.load(file)
        address= '127.0.0.1'
        answer_change= False
        index= 0
        for i in data["answers_dict"]["0"]:
                address_location= data["answers_dict"]["0"][index].find('|') + 1
                data_indexed= data["answers_dict"]["0"][index]
                if data_indexed[address_location:]== address:
                        data["answers_dict"]["0"][index]= new_answer + '|' +  address
                        answer_change= True
                index += 1
        if answer_change is False:
                data["answers_dict"]["0"].append(new_answer + '|' +  address)
        file.seek(0)
        json.dump(data, file, indent= 4)

JSON 파일:

{
    "answers_dict": {
        "0": [
            "3_div|127.0.0.1"
        ],
        "1": [],
        "2": [],
        "3": [],
        "4": [],
        "5": [],
        "6": [],
        "7": [],
        "8": []
    }
}

원하는 것은 불가능합니다. list의 str 값을 data_index라는 이름에 바인딩합니다. 그런 다음 새 값을 바인딩합니다. 반면에 data["answers_dict"]["0"][index]=를 사용하는 것은 변경 가능한 목록에 대한 인덱스 할당이며 작동합니다.

buran2022-01-15 08:35:31

혼란을 일으키는 것은 Call by value와 Call by reference Concept입니다. 다른 언어가 어떻게 작동하는지 보려면 이것을 읽고 이와 같은 상황에서 파이썬이 어떻게 작동하는지 보려면 이것을 읽으십시오. 한 마디로 JAVA로 code를 작성하고 있었고 모두 훌륭하고 잘 작동했습니다!

Mehrdad Khojastefar2022-01-15 08:50:26
  • 이전 Grav CMS에 Wordpress와 같은 미디어 라이브러리가 있습니까?
  • 다음 swift : 튜플에 대한 신속한 사용자 지정 할당