python 列表相等(非顺序)

在写单元测试的时候, 测db里面获取到的值, 发现


res = load_data_from_db(data = [{'a': 2}, {'a': 1}])

assert [{'a': 1}, {'a': 2}]==res


居然报错了!!!

在度娘里面找不到, 关于非排序的列表判断相等的相关的知识


谷歌一下, Raymond大神给出了正解

如果对于可哈希的值使用 Counter() ,O(n)

def compare(s, t):

    return Counter(s) == Counter(t)


如果你的结果是可排序的 sorted() ,O(n log n)


def compare(s, t):

    return sorted(s) == sorted(t)


对于不可哈希,也不可以排序的值, 还是可以使用相等去解决,O(n * n):
 
def compare(s, t):
    t = list(t)   # make a mutable copy
    try:
        for elem in s:
            t.remove(elem)
    except ValueError:
        return False

    return not t


原文地址:

https://stackoverflow.com/questions/7828867/how-to-efficiently-compare-two-unordered-lists-not-sets-in-python

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值