Я хотел бы преобразовать список Python в Json, мой список Python установлен как ключ -> значение. Однако все мои значения должны быть иногда ключевыми, а иногда значения в моем JSON.

Например:


import json


raw = [
    {
        "name": "User-Agent",
        "value": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36"
    },
    {
        "name": "Accept",
        "value": "*/*"
    },
    {
        "name": "Accept-Language",
        "value": "fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3"
    },
    {
        "name": "Accept-Encoding",
        "value": "gzip, deflate, br"
    },
    {
        "name": "Content-Type",
        "value": "text/plain;charset=UTF-8"
    },
    {
        "name": "Content-Length",
        "value": "205"
    },
    {
        "name": "Connection",
        "value": "keep-alive"
    }
]


for i in raw:
    print (i['name'],i['value'])

Я хотел бы что-то вроде этого в формате Json

{
'User-Agent' :  'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36',
'Accept' :  '*/*',
'Accept-Language' : 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding'  : 'gzip, deflate, br',
'Content-Type' : 'text/plain;charset=UTF-8',
'Content-Length' : '205',
'Connection' : 'keep-alive'
}

Спасибо

1
Neeko 4 Июл 2019 в 12:01

4 ответа

Лучший ответ

Попробуй это,

>>> {e['name']:e['value'] for e in raw}

< Сильный > Вывод :

{'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36', 
'Accept': '*/*', 
'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3', 
'Accept-Encoding': 'gzip, deflate, br',
 'Content-Type': 'text/plain;charset=UTF-8', 
'Content-Length': '205', 
'Connection': 'keep-alive'}
3
shaik moeed 4 Июл 2019 в 09:05
import json
dict = {}
for item in raw:
    dict.update({item['name']:item['value']})
#dict = {item['name'] : item['value'] for item in raw}

print (dict)
print (json.dumps(dict)) # convert dictionary into json

Выход:

{'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36', 'Accept': '*/*', 'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding': 'gzip, deflate, br', 'Content-Type': 'text/plain;charset=UTF-8', 'Content-Length': '205', 'Connection': 'keep-alive'}
{"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36", "Accept": "*/*", "Accept-Language": "fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3", "Accept-Encoding": "gzip, deflate, br", "Content-Type": "text/plain;charset=UTF-8", "Content-Length": "205", "Connection": "keep-alive"}
0
ncica 4 Июл 2019 в 09:07

Попробуй это :

dict_ = {}
for i in raw:
    dict_[i['name']] = i['value']

Или просто:

dict_ = {i['name'] : i['value'] for i in raw}

Вывод .

{
'User-Agent' :  'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36',
'Accept' :  '*/*',
'Accept-Language' : 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding'  : 'gzip, deflate, br',
'Content-Type' : 'text/plain;charset=UTF-8',
'Content-Length' : '205',
'Connection' : 'keep-alive'
}
2
Arkistarvh Kltzuonstev 4 Июл 2019 в 09:04

Вы можете попробовать ниже код:

d1 = {item['name']:item['value'] for item in raw}
print(d1)

Выход:

{
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36', 
'Accept': '*/*', 
'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding': 'gzip, deflate, br',
'Content-Type': 'text/plain;charset=UTF-8',
'Content-Length': '205',
'Connection': 'keep-alive'
}
0
Amit Nanaware 4 Июл 2019 в 09:06