programing

이중 따옴표를 기본 따옴표 형식으로 사용하여 파이썬 사전을 만드는 방법은 무엇입니까?

muds 2023. 5. 26. 22:51
반응형

이중 따옴표를 기본 따옴표 형식으로 사용하여 파이썬 사전을 만드는 방법은 무엇입니까?

시각화 목적으로 html 파일 내에서 자바 스크립트 var로 사용할 파이썬 사전을 만들려고 합니다.필수적으로 Python에서 사용하는 기본 단일 따옴표 대신 이중 따옴표 안에 모든 이름을 포함하는 사전을 만들어야 합니다.이를 달성하기 위한 쉽고 우아한 방법이 있을까요?

    couples = [
               ['jack', 'ilena'], 
               ['arun', 'maya'], 
               ['hari', 'aradhana'], 
               ['bill', 'samantha']]
    pairs = dict(couples)
    print pairs

생성된 출력:

{'arun': 'maya', 'bill': 'samantha', 'jack': 'ilena', 'hari': 'aradhana'}

예상 출력:

{"arun": "maya", "bill": "samantha", "jack": "ilena", "hari": "aradhana"}

알고있어요,json.dumps(pairs)작업은 가능하지만 사전 전체가 문자열로 변환되어 제가 기대하는 것과는 다릅니다.

추신: 제가 중첩된 사전을 다루고 있기 때문에 json을 사용하여 이 작업을 수행할 수 있는 다른 방법이 있습니까?

json.dumps()당신이 여기서 원하는 것이 무엇입니까, 만약 당신이 사용한다면.print(json.dumps(pairs))예상 출력을 얻을 수 있습니다.

>>> pairs = {'arun': 'maya', 'bill': 'samantha', 'jack': 'ilena', 'hari': 'aradhana'}
>>> print(pairs)
{'arun': 'maya', 'bill': 'samantha', 'jack': 'ilena', 'hari': 'aradhana'}
>>> import json
>>> print(json.dumps(pairs))
{"arun": "maya", "bill": "samantha", "jack": "ilena", "hari": "aradhana"}

다음을 사용하여 특수 인쇄로 딕트의 자체 버전을 구성할 수 있습니다.json.dumps():

>>> import json
>>> class mydict(dict):
        def __str__(self):
            return json.dumps(self)

>>> couples = [['jack', 'ilena'], 
               ['arun', 'maya'], 
               ['hari', 'aradhana'], 
               ['bill', 'samantha']]    

>>> pairs =  mydict(couples) 
>>> print pairs
{"arun": "maya", "bill": "samantha", "jack": "ilena", "hari": "aradhana"}

다음을 반복할 수도 있습니다.

>>> for el in pairs:
       print el

arun
bill
jack
hari
# do not use this until you understand it
import json

class doubleQuoteDict(dict):
    def __str__(self):
        return json.dumps(self)

    def __repr__(self):
        return json.dumps(self)

couples = [
           ['jack', 'ilena'], 
           ['arun', 'maya'], 
           ['hari', 'aradhana'], 
           ['bill', 'samantha']]
pairs = doubleQuoteDict(couples)
print pairs

산출물:

{"arun": "maya", "bill": "samantha", "jack": "ilena", "hari": "aradhana"}

이것은 기본입니다.print버전:

>>> print '{%s}' % ', '.join(['"%s": "%s"' % (k, v) for k, v in pairs.items()])
{"arun": "maya", "bill": "samantha", "jack": "ilena", "hari": "aradhana"}

질문의 전제는 틀렸습니다.

I know, json.dumps(pairs) does the job, but the dictionary 
as a whole is converted into a string which isn't what I am expecting.

문자열로 변환해야 합니다."인쇄"가 수행하는 모든 작업은 객체를 문자열로 변환하여 표준 출력으로 보내는 것입니다.

Python이 볼 때:

print somedict

실제 기능은 다음과 같습니다.

sys.stdout.write(somedict.__str__())
sys.stdout.write('\n')

보시다시피 딕트는 항상 문자열로 변환됩니다(결국 stdout과 같은 파일로 보낼 수 있는 유일한 데이터 유형은 문자열입니다).

문자열로의 변환을 제어하는 방법은 객체에 대해 __str_을 정의하거나 다음과 같은 예쁜 인쇄 함수를 호출하여 수행할 수 있습니다.json.dumps()두 방법 모두 인쇄할 문자열을 만드는 효과는 동일하지만, 후자의 기법은 많은 이점을 가지고 있습니다(새 개체를 만들 필요가 없고 중첩된 데이터에 재귀적으로 적용되며 표준이며 속도를 위해 C로 작성되었으며 이미 잘 테스트되었습니다).

추신은 여전히 요점을 놓치고 있습니다.

P.S.: Is there an alternate way to do this with using json, since I am
dealing with nested dictionaries.

json 모듈을 피하기 위해 왜 그렇게 열심히 일합니까?큰따옴표를 사용하여 중첩된 사전을 인쇄하는 문제에 대한 거의 모든 해결책은 json.dump()가 이미 수행하는 것을 다시 발명할 것입니다.

여러 번 문제가 된 것은 json 파일을 로드할 때입니다.

import json
with open('json_test.json', 'r') as f:
    data = json.load(f)
    print(type(data), data)
    json_string = json.dumps(data)
    print(json_string)

실수로 json 문자열을 원하는 함수에 데이터를 전달했는데 단일 따옴표가 유효한 json이 아니라는 오류가 발생합니다.나는 입력된 json 파일을 다시 확인하고 이중 따옴표를 보고 잠시 머리를 긁습니다.

문제는 데이터가 문자열이 아닌 딕트라는 것입니다. 하지만 Python이 변환할 때 유효한 json이 아닙니다.

<class 'dict'> {'bill': 'samantha', 'jack': 'ilena', 'hari': 'aradhana', 'arun': 'maya'}
{"bill": "samantha", "jack": "ilena", "hari": "aradhana", "arun": "maya"}

json이 유효하고 문자열로 변환하기 전에 딕트를 처리할 필요가 없으면 문자열이 트릭을 수행하는 대로 로드합니다.

with open('json_test.json', 'r') as f:
    json_string = f.read()
    print(json_string)

두 걸음만 걸으면 쉬워집니다.

step1:converting your dict to list

step2:iterate your list and convert as json .

더 나은 이해를 위해 아래의 스니펫을 확인하십시오.

import json
couples = [
               ['jack', 'ilena'], 
               ['arun', 'maya'], 
               ['hari', 'aradhana'], 
               ['bill', 'samantha']]
pairs = [dict(couples)]#converting your dict to list
print(pairs)

#iterate ur list and convert as json
for x in pairs:
    print("\n after converting: \n\t",json.dumps(x))#json like structure

언급URL : https://stackoverflow.com/questions/18283725/how-to-create-a-python-dictionary-with-double-quotes-as-default-quote-format

반응형