Python Изменить структуру данных из отчета - PullRequest
0 голосов
/ 16 мая 2019

У меня есть такие данные:

data = {
'impressions': {'20190513': '50922', '20190514': '62343', '20190515': '34866'},
'clicks': {'20190513': '25', '20190514': '28', '20190515': '12'}}

но запутался, чтобы изменить структуру следующим образом:

[{
    'date': '20190513',
    'impressions': '50922',
    'clicks': '25',
},
{
    'date': '20190514',
    'impressions': '62343',
    'clicks': '28',
},
{
    'date': '20190515',
    'impressions': '34866',
    'clicks': '12',
}]

Я пробовал несколько раз, но не получилось. Помоги мне, пожалуйста. Спасибо это ...

Ответы [ 4 ]

3 голосов
/ 16 мая 2019

Использование списка и диктовки.Работает в Python 2 и 3:

from pprint import pprint
d = [{'date': date, 'impressions': data['impressions'][date], 'clicks': data['clicks'][date]} for date in data['clicks']]
pprint(d)

Вывод:

[{'clicks': '25', 'date': '20190513', 'impressions': '50922'},
 {'clicks': '28', 'date': '20190514', 'impressions': '62343'},
 {'clicks': '12', 'date': '20190515', 'impressions': '34866'}]
2 голосов
/ 16 мая 2019

Dictionary, items () метод возвращает список со всеми словарными ключами со значениями

data = {
'impressions': {'20190513': '50922', '20190514': '62343', '20190515': '34866'},
'clicks': {'20190513': '25', '20190514': '28', '20190515': '12'}}

impressions = data['impressions']
clicks = data['clicks']

list1 = []
for key,value in impressions.items():
    dict1 = {}

    dict1['date'] = key
    dict1['impressions'] = value
    #check key exist in clicks dictionary
    if key in clicks:
        dict1['clicks'] = clicks[key]

    list1.append(dict1)

print(list1)

O / P:

[{'date': '20190513', 'impressions': '50922', 'clicks': '25'}, {'date': '20190514', 'impressions': '62343', 'clicks': '28'}, {'date': '20190515', 'impressions': '34866', 'clicks': '12'}]
1 голос
/ 16 мая 2019

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

data = {
'impressions': {'20190513': '50922', '20190514': '62343', '20190515': '34866'},
'clicks': {'20190513': '25', '20190514': '28', '20190515': '12'}}

result = [{"date":key,"impressions":value,"clicks":data["clicks"][key]} for key,value in data["impressions"].items()]

print(result)
1 голос
/ 16 мая 2019

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

data = {
'impressions': {'20190513': '50922', '20190514': '62343', '20190515': '34866'},
'clicks': {'20190513': '25', '20190514': '28', '20190515': '12'}}

result = []
for i in data['impressions'].keys():
    result.append({'date': i, 'impressions': data['impressions'][i], 'clicks': data['clicks'][i]})

print(result)

Это мой результат:

[{'date': '20190513', 'impressions': '50922', 'clicks': '25'}, {'date': '20190514', 'impressions': '62343', 'clicks': '28'}, {'date': '20190515', 'impressions': '34866', 'clicks': '12'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...