在python中过滤字典? [复制]
Posted
技术标签:
【中文标题】在python中过滤字典? [复制]【英文标题】:Filter dict in python? [duplicate] 【发布时间】:2021-03-25 18:22:45 【问题描述】:我是 Python 新手,并试图从给定的 dict 中仅获取某些值。我的字典看起来像这样:
my_dict =
"Value1": "2000",
"Value2": "3000",
"Value3": "4000"
for (key,value) in my_dict:
if (int(value) > 2000):
print(value)
如何仅返回大于 2000 的值对应的(键、值)对?感谢您的帮助。
【问题讨论】:
【参考方案1】:如果字典不是太大,使用字典理解重建它而不需要不需要的值可能会更便宜。 “这是 [Python] 方式。”
my_dict = k: v for k, v in my_dict.items() if int(v) > 2000
#'Value2': '3000', 'Value3': '4000'
【讨论】:
【参考方案2】:您可以像这样尝试.items()
:
my_dict =
"Value1": "2000",
"Value2": "3000",
"Value3": "4000"
for (key,value) in my_dict.items():
if (int(value) > 2000):
print(value)
【讨论】:
谢谢,.items() 让它变得简单。我现在在 w3schools 上看到了这个方法。【参考方案3】:你可以试试这个-
my_dict =
"Value1": "2000",
"Value2": "3000",
"Value3": "4000"
for key in my_dict:
if not int(my_dict[key]) > 2000:
my_dict.pop(key,None)
print(my_dict)
想法是删除不满足条件的键
【讨论】:
@ggorlen - 感谢您的关注,更新了答案 好的。我也会使用<=
而不是not ... >
。 dict comp 可能是最干净的,但确实会使用更多内存,my_dict = k: v for k, v in my_dict.items() if int(v) > 2000
。【参考方案4】:
my_dict =
"Value1": "2000",
"Value2": "3000",
"Value3": "4000"
for key, value in my_dict.items():
if int(value) > 2000:
print(key, value)
【讨论】:
是的,.items() 成功了。【参考方案5】:您可以通过仅在键上进行迭代来实现它 — 当您知道字典的键时,您也知道值:
my_dict =
"Value1": "2000",
"Value2": "3000",
"Value3": "4000"
for key in my_dict:
value = my_dict[key]
if int(value) > 2000:
print(key, value)
【讨论】:
以上是关于在python中过滤字典? [复制]的主要内容,如果未能解决你的问题,请参考以下文章