2013-10-07 2 views
0

У меня есть большой файл geoJSON, который передает карту выборов. Я очистил сайт и вернул результаты избирательного участка в словарь python, который выглядит следующим образом: {u'605': [u'56', u'31'], u'602': [u'43', u'77'] и т. Д.}, Где ключ - это номер участка, а список значений - это голоса первого кандидата и голоса второго кандидата.Обновление файла geoJSON из python dict

Я хочу обновить файл geoJSON - который является участником избирательных участков - с результатами из словаря. В моем файле geoJSON у меня есть номер участка как одна из моих пар ключ/значение (например, "precNum": 602). Как я могу обновить каждую фигуру с помощью результатов из словаря?

Я цель и цикл через файл GeoJSON с чем-то вроде этого:

for precincts in map_data["features"]: 
    placeVariable = precincts["properties"] 

    placeVariable["precNum"] 
    #This gives me the precinct number of the current shape I am in. 

    placeVariable["cand1"] = ?? 
    # I want to add the Value of first candidate's vote here 

    placevariable["cand2"] = ?? 
    # I want to add the Value of second candidate's vote here 

Все идеи были бы огромную помощь.

+0

Можете ли вы опубликовать образец своего json-файла? – shshank

+0

Несомненно. Каждый объект является объектом, который выглядит следующим образом: '{" type ":" Feature "," id ": 0," properties ": {" preNum ": 40," SHAPE_AREA ": 0.0}," geometry ": {" type ":" Polygon "," Coordinates ": [[[[Кодеры здесь]]]}}' – JonnyD

+0

см. мой ответ. это то, что вы пытаетесь сделать? @JonnyD – shshank

ответ

1

Вы можете обновить его, как это.

your_dict = {u'605': [u'56', u'31'], u'602': [u'43', u'77']} 

for precincts in map_data["features"]: 

    placeVariable = precincts["properties"] 
    prec = placeVariable["precNum"] 

    if your_dict.get(prec): #checks if prec exists in your_dict 
     placeVariable["cand1"] = your_dict['prec'][0] 
     placevariable["cand2"] = your_dict['prec'][0] 
0

Ваш вопрос смущенно сформулирован. Вам нужно лучше идентифицировать ваши вары.

Похоже, вы пытаетесь накопить итоговые итоги голосования. таким образом, вы хотите:

  • участковых 100: [1, 200]
  • участковых 101: [4, 300]

добавить в:

  • [5, 500]

Предположим, аккумуляторная батарея накопителя. Вы можете выбросить информацию, на которой голос пришел откуда, когда вы просто добавить:

for vals in map_data['features'].values(): 
    while len(accum) < len(vals): 
     accum.append(0) 
    for i in range(len(vals)): 
     accum[i] += vals[i] 

Вот пример программы, которая доказывает решение:

>>> x = { 'z': [2, 10, 200], 'y' : [3, 7], 'b' : [4, 8, 8, 10 ] } 
>>> accum = [] 
>>> for v in x.values(): 
... while len(accum) < len(v): 
...  accum.append(0) 
... for i in range(len(v)): 
...  accum[i] += v[i] 
... 
>>> accum 
[9, 25, 208, 10] 
>>> 
+0

Извините, Кевин, это не то, что я хотел сделать. Я хочу обновить информацию в моем файле geoJSON с информацией в моем словаре. Если моя фигура похожа на мой geoJSON, это выглядит следующим образом: '{" type ":" Feature "," id ": 0," properties ": {" preNum ": 40," SHAPE_AREA ": 0.0}," geometry ": { «type»: «Polygon», «Coordinates»: [[[Coords here]]]}} 'Я хочу, чтобы данные в моем словаре на участке 40 подавали в этот объект формы, изменяя свойства на' "свойства": {«preNum»: 40, «SHAPE_AREA»: 0.0, «cand1»: 70, «cand2»: 14} ' – JonnyD

Смежные вопросы