在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中过滤字典? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中读取和写入字典到外部文件? [复制]

Python在字典中复制键。(一对多关系)

在Python列表中对嵌套字典进行排序? [复制]

如何在 python 中使用两个列表创建字典? [复制]

Python - 如何在遍历字典列表时处理丢失的键? [复制]

如何在 Python 中解析 JSON 并将 2 个字段放入字典中? [复制]