我有一个大型的geoJSON文件,可以提供选举地图。我已经删除了一个站点,并将选民区结果返回到一个如下所示的python词典:{u'605': [u'56', u'31'], u'602': [u'43', u'77']
等...}其中键是区号,值列表是第一个候选人的投票和第二个候选人的投票票。
我想用字典中的结果更新我的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 :(得分: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]
答案 1 :(得分:0)
你的问题令人困惑。 您需要更好地识别您的变量。
听起来你正试图累积投票总数。 因此,你想要:
添加到:
设定累加器的累加器数组。您可以丢弃哪些投票来自您刚刚添加的信息:
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]
>>>