使用缺少的键值对更新嵌套字典

时间:2021-01-31 01:46:21

标签: python dictionary nested key-value

我有一个具有唯一 id 的字典和对应于基数位置的键值对的嵌套字典:

{'925328413719459770': {'N': 14,
  'NNW': 116,
  'NW': 38,
  'S': 1,
  'SE': 2,
  'SSE': 1,
  'W': 16,
  'WNW': 146,
  'WSW': 16}}

然而,并非所有嵌套的字典都会包含 16 个可能的基数位置中的每一个:

cp = ["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE",
        "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"]

与完整列表 cp 相比,我能够获得字典中的基数位置集之间的差异for leg in legdict.values(): print(list(set(cp) - set(leg.keys()))) ['ESE', 'SSW', 'NNE', 'NE', 'ENE', 'SW', 'E']

  {'925328413719459770': {'N': 14,
      'NNW': 116,
      'NW': 38,
      'S': 1,
      'SE': 2,
      'SSE': 1,
      'W': 16,
      'WNW': 146,
      'WSW': 16,
      'ESE': 0, 
      'SSW': 0, 
      'NNE': 0, 
      'NE': 0, 
      'ENE':0, 
      'SW': 0, 
      'E': 0 }}

然后如何使用缺失的位置更新嵌套字典并将它们的值设置为 0?输出将是这样的:

update()

在 python 中是否有使用 legdict 方法执行此操作的有效方法,或者可以使用列表来更新 dict,同时将该列表的所有元素设置为 0?实际的 @foreach (var i in Model.Users) { <div> <form id="deletForm"> <input name="Id" id="Id" value="@i.Id" hidden /> <input name="UserId" id="userId" value="@i.ApplicationUserId" hidden /> <button type="submit" class="close-icon" id="deleteBtn"></button> </form> <div class="class" data-toggle="tooltip" title="@i.ApplicationUser.FullName">@i.ApplicationUser.Name.ToUpper()</div> </div> } <script> $("#deleteBtn").click(function (e) { e.preventDefault(); var formdata = $("#deletForm").serialize(); alert(formdata); alert('I got here'); }); </script> 非常大,因此对于有效方法的任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

这个怎么样:

if (DateTime.Parse(BirthDate.Text).AddYears(18) > DateTime.Now) {
                errorList.Add("You must be at least 18 years of age.");

应该相当高效,因为它不制作任何副本,它只是迭代所有内容并在必要时填充缺失的键。

作为一般规则,您应该始终首先采用最简单的解决方案。如果结果太慢,请稍后优化。