0

我有一个提供选举地图的大型 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

任何想法都会有很大的帮助。

4

2 回答 2

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]
于 2013-10-07T23:55:35.763 回答
0

你的问题措辞令人困惑。您需要更好地识别您的变量。

听起来您正在尝试累积投票总数。因此,您想要:

  • 选区 100:[ 1, 200 ]
  • 101 选区:[4, 300]

添加到:

  • [ 5, 500 ]

假设 accum 的累加器数组。您可以在添加时丢弃有关投票来自何处的信息:

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]
>>> 
于 2013-10-07T22:41:11.413 回答