Преобразовать кортеж в список в словаре - PullRequest
1 голос
/ 08 марта 2019

У меня есть вывод GeoJSON в виде:

{'type': 'Point', 'coordinates': (0.00027777777777777827, 22.000138888888873)}

Как преобразовать значение «координаты» из кортежа в список, сохранив «тип» как есть?

Я пытался использовать {k: [list(ti) for ti in v] for k, v in geom.items()}, как указано здесь , где geom = geometry.mapping(geometry.Point(x, y)), но это не помогает.

Я вижу ошибку, которая говорит: «Объект с плавающей точкой не повторяется»

Я использую стройную библиотеку

Ответы [ 3 ]

3 голосов
/ 08 марта 2019

Вы можете изменить только клавишу 'coordinates' в виде списка:

geom['coordinates'] = list(geom['coordinates'])

ВЫХОД :

{'type': 'Point', 'coordinates': [0.00027777777777777827, 22.000138888888873]}
1 голос
/ 08 марта 2019

Очень простой способ, тестирование через консоль Python:

>>> d = {'type': 'Point', 'coordinates': (0.00027777777777777827, 22.000138888888873)}
>>>
>>> type(d)
<class 'dict'>
>>>
>>> d['coordinates']
(0.00027777777777777827, 22.000138888888873)
>>>
>>> type(d['coordinates'])
<class 'tuple'>
>>>
>>> list(d['coordinates'])
[0.00027777777777777827, 22.000138888888873]

Наконец, вы перезаписываете только содержимое словаря:

>>> d['coordinates'] = list(d['coordinates'])
1 голос
/ 08 марта 2019

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

a['coordinates'] = list(a['coordinates'])

где a - ваш диктант.

...