Перенос значений из одного ключа в другой ключ в словаре Python - PullRequest
5 голосов
/ 05 апреля 2019

У меня есть словарь ниже (Geojson):

'properties': {
            'fill': '#ffffff', 'fill-opacity': 1, 'stroke': '#ffffff',
'stroke-opacity': 1, 'stroke-width': 1.5, 'title': '0.00 m',
'time': '2000-01-31'
    }

Какой самый простой способ сделать это, как показано ниже, путем перемещения определенных значений в новые ключи в свойствах.

'properties': {
        'style': {
            'fill': '#ffffff', 'fill-opacity': 1, 'stroke': '#ffffff',
'stroke-opacity': 1, 'stroke-width': 1.5, 'title': '0.00 m'
        },
        'time': '2000-01-31'
    }
}

Любая обратная связь будет полезна. Спасибо.

Ответы [ 2 ]

3 голосов
/ 05 апреля 2019

Вы можете выдвинуть time и создать новый диктовку, подобную этой:

properties = {
            'fill': '#ffffff', 'fill-opacity': 1, 'stroke': '#ffffff',
'stroke-opacity': 1, 'stroke-width': 1.5, 'title': '0.00 m',
'time': '2000-01-31'
    }

time = properties.pop('time')
new_properties = {'style': properties, 'time':time}

print(new_properties)
# {'style': {'fill': '#ffffff', 'fill-opacity': 1, 'stroke': '#ffffff', 
#            'stroke-opacity': 1, 'stroke-width': 1.5, 'title': '0.00 m'},
#   'time': '2000-01-31'}
0 голосов
/ 05 апреля 2019

Предполагая, что исходные данные в формате dict (должно быть, если они имеют ключ и значение), и то же самое верно для желаемого результата:

from pprint import pprint

start = {
    'properties': {
            'fill': '#ffffff', 'fill-opacity': 1, 'stroke': '#ffffff',
'stroke-opacity': 1, 'stroke-width': 1.5, 'title': '0.00 m',
'time': '2000-01-31'
    }
}

result = {
    'properties': {
        'style': start['properties'],
        'time': start['properties'].pop('time')
    },
}

pprint(result)

Результат:

{'properties': {'style': {'fill': '#ffffff',
                          'fill-opacity': 1,
                          'stroke': '#ffffff',
                          'stroke-opacity': 1,
                          'stroke-width': 1.5,
                          'title': '0.00 m'},
                'time': '2000-01-31'}}
...