【问题标题】:How to Get Unique Latitude and Longitude Pair from List of Dictionary without Numpy?如何在没有 Numpy 的情况下从字典列表中获取唯一的纬度和经度对?
【发布时间】:2021-06-15 05:31:37
【问题描述】:

我有这个字典列表:

position_list = [
   {'position.latitude': -1, 'position.longitude': -1}, 
   {'position.latitude': -3, 'position.longitude': 2}, 
   {'position.latitude': -3, 'position.longitude': 2}, 
   {'position.latitude': -4, 'position.longitude': 5},
   {'position.latitude': 5, 'position.longitude': -4}
]

我想要的是这个:

position_list = [
   {'position.latitude': -1, 'position.longitude': -1}, 
   {'position.latitude': -3, 'position.longitude': 2}, 
   {'position.latitude': -4, 'position.longitude': 5}
   {'position.latitude': 5, 'position.longitude': -4}
]

我不能使用 NumPy 库,因为我不仅要在 Python 中这样做。 我如何做到这一点?

编辑 应该保留顺序。

【问题讨论】:

    标签: python unique


    【解决方案1】:

    最简单的方法

    >>> new = []
    >>> for i in position_list:
    ...     if i not in new:
    ...         new.append(i)
    ...
    
    >>> new
    [{'position.latitude': -1, 'position.longitude': -1}, {'position.latitude': -3, 'position.longitude': 2}, {'position.latitude': -4, 'position.longitude': 5}, {'position.latitude': 5, 'position.longitude': -4}]
    

    更新:订单被保留。

    【讨论】:

      【解决方案2】:

      你可以为此使用 freezeset()

      In [1]: position_list = [
         ...:    {'position.latitude': -1, 'position.longitude': -1},
         ...:    {'position.latitude': -3, 'position.longitude': 2},
         ...:    {'position.latitude': -3, 'position.longitude': 2},
         ...:    {'position.latitude': -4, 'position.longitude': 5},
         ...:    ]
      
      In [2]: position_list
      Out[2]: 
      [{'position.latitude': -1, 'position.longitude': -1},
       {'position.latitude': -3, 'position.longitude': 2},
       {'position.latitude': -3, 'position.longitude': 2},
       {'position.latitude': -4, 'position.longitude': 5}]
      
      In [3]: [dict(s) for s in set(frozenset(d.items()) for d in position_list)]
      Out[3]: 
      [{'position.longitude': 5, 'position.latitude': -4},
       {'position.longitude': 2, 'position.latitude': -3},
       {'position.latitude': -1, 'position.longitude': -1}]
      

      【讨论】:

      • 我会使用 OrderedSet 代替集合:[dict(s) for s in OrderedSet(frozenset(d.items()) for d in position_list)] 来实现有序列表;
      • @Daniel111 我不知道 Python 有一个 OrderedSet 这是来自哪个库?
      • 我使用它:from setuptools._vendor.ordered_set import OrderedSet
      猜你喜欢
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2015-02-25
      • 1970-01-01
      相关资源
      最近更新 更多