提问人:Elio Baharan 提问时间:12/26/2022 最后编辑:Elio Baharan 更新时间:12/26/2022 访问量:43
在 Python 中筛选字典键和值
filtering dictionary keys and values in python
问:
我有一个具有相同键的字典列表,我想根据输入字符串中给我的条件过滤这些字典。
我有这个词典列表:
dictlist: [[{'name': '“搏击俱乐部”', '排名': 12, '预算': 450000}, {'name': '“星际穿越”', 'rank': 26, 'budget': 700000}], [{'name': '“se7en”', '排名': 19, '预算': 200000}, {'name': '“汉密尔顿”', 'rank': 107, 'budget': 650000}]]
我从用户那里收到条件,例如:
SELECT (name,budget) FROM movies WHERE budget=450000
或
SELECT (name,budget) FROM movies WHERE 排名>10
或
SELECT (name,budget,rank) FROM movies WHERE name=='搏击俱乐部'
不幸的是,我无法为此编写代码来过滤我的字典列表。
感谢您对我的帮助。
答:
1赞
realFishSam
12/26/2022
#1
我写了这个:
dictlist = [
[{'name': '"fight club"', 'rank': 12, 'budget': 450000}, {'name': '"Interstellar"', 'rank': 26, 'budget': 700000}],
[{'name': '"se7en"', 'rank': 19, 'budget': 200000}, {'name': '"Hamilton"', 'rank': 107, 'budget': 650000}]
]
def greaterThanFilter(filterName, filterValue, dictlist):
for i in dictlist:
for j in i:
if j[filterName] > filterValue:
print(j['name'])
greaterThanFilter('budget', 200000, dictlist)
这只能检查一个值是否大于另一个值。
修改此代码应该对您有所帮助。我建议你把你的词典列表重组成这样:
dictlist = [
{'name': '"fight club"', 'rank': 12, 'budget': 450000},
{'name': '"Interstellar"', 'rank': 26, 'budget': 700000},
{'name': '"se7en"', 'rank': 19, 'budget': 200000},
{'name': '"Hamilton"', 'rank': 107, 'budget': 650000}
]
以相同方式筛选列表的代码如下所示:
def greaterThanFilter(budget, dictlist):
return [x for x in dictlist if x['budget'] > budget]
# Output: ['"Interstellar"', '"Hamilton"']
评论
0赞
realFishSam
12/26/2022
您可以修改过滤器以执行其他操作,例如检查匹配的名称或高于或低于某物的排名。有很大的改进/功能实现空间。你明白了!
0赞
Elio Baharan
12/26/2022
非常感谢你,但不幸的是,由于我的错,它无法帮助我。实际上,该条件尚不清楚它是大于还是小于或等于。我们从用户那里得到确切的条件,例如,它可以是 rank>2。而且因为我是根据两个不同的列表创建这个字典的,所以我无法更改维度
0赞
realFishSam
12/26/2022
你需要什么?如果你需要匹配名称,你可以使用类似 “ return [x for x in dictlist if x['budget'] > budget and x['name'] == ”moviename here”
上一个:如何绘制重复值的线性图
下一个:质数之和 [已关闭]
评论