根据其关键字过滤字典

时间:2019-10-19 00:53:50

标签: python

我有一本字典,其键是字符串,值是数字。我还有另一个字符串列表。我想通过删除所有键,值对(如果键是字符串列表中的一个字符串)来过滤字典。

例如,dict={"good":44,"excellent":33,"wonderful":55}, randomList=["good","amazing","great"]然后该方法应给出newdict={"excellent":33,"wonderful":55}

我想知道是否有一种方法可以使用很少的代码来做到这一点。有没有办法快速做到这一点?

2 个答案:

答案 0 :(得分:1)

这段简单的代码满足您的需求

Project::where('user_id', $uid)
            ->orWhere('user_id', 0)
            ->where(function($q)  {

                $table_2_data = ["2","3"];

                query here

            })
            ->orderBy('title', 'asc')
            ->get();

答案 1 :(得分:0)

遍历字典并删除列表中没有的键/值对:

d = {'foo': 0, 'bar': 1, 'foobar': 2}
list_of_str = ['foo', 'bang']
{k:v for k, v in d.items() if k not in list_of_str}

输出:

Out[34]: {'bar': 1, 'foobar': 2}

或者如果您的list_of_str较小,则速度会更快:

d = {'foo': 0, 'bar': 1, 'foobar': 2}
list_of_str = ['foo', 'bang']
for s in list_of_str:
    try:
        del d[s]
    except KeyError:
        pass

输出:

Out[41]: {'bar': 1, 'foobar': 2}