【问题标题】:Python dictionary magic needed需要 Python 字典魔法
【发布时间】:2020-12-23 03:56:53
【问题描述】:

我有这两个 Python 字典,其中包含关联的位置和数量。

A: {'Pompano Beach': ['13'], ' Miami': ['18'], ' W. Palm Beach': ['18']}
B:  {'Atlanta': ['25'], 'Las Vegas': ['50+']}

我需要将它们打印在 html 表格中。我目前正在使用带有 jinja2 模板的烧瓶。

我希望我的结果为:

C: {'Pompano Beach': ['13', '0'], ' Miami': ['18', '0'], ' W. Palm Beach': ['18', '0'], 'Atlanta': ['0','25'], 'Las Vegas': ['0', '50+']}

其中每个列表值中的 0 索引是 A 的数量,1 索引是 B 的数量。 此外,如果 B 中不存在该城市,则添加 0。如果 A 中不存在该城市,则在其相应索引中添加 0。

我不确定是否有更简单的解决方案,但我已经到了这样的地步,我相信这是我需要使用 jinja2 模板来保持我的样式。

【问题讨论】:

    标签: python dictionary flask jinja2


    【解决方案1】:

    您可以在使用默认值为['0'].get 时使用字典推导:

    C = {k: A.get(k, ['0']) + B.get(k, ['0']) for k in list(A) + list(B)}
    print(C)
    

    输出

    {'Pompano Beach': ['13', '0'], ' Miami': ['18', '0'], ' W. Palm Beach': ['18', '0'], 
     'Atlanta': ['0', '25'], 'Las Vegas': ['0', '50+']}
    

    您可以获得相同的输出,同时避免创建 2 个额外的列表

    C = {k: A.get(k, ['0']) + B.get(k, ['0']) for k in A.keys() | B.keys()}
    

    【讨论】:

      猜你喜欢
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 2020-10-17
      相关资源
      最近更新 更多