是否有提供字典,列表等搜索工具的软件包?

时间:2019-12-27 06:07:10

标签: python python-3.x package

例如,一个提供字典和值的函数将返回首先包含所述值的键。或者也许是一个可以返回包含某个值的所有键的函数,等等。是否有专门的程序包来处理这样的事情?

2 个答案:

答案 0 :(得分:1)

您想做的两件事可以通过使用列表理解来实现。但是在字典中,没有顺序。因此,您不能仅获得第一个元素。

d = {"One": 1, "Two": 2, "Three": 3, "Four": 3}
ks = [v for k, v in d.items() if v > 1]

我认为许多built-in types, such as int, str, list, set, dict拥有许多非常方便的方法,但是可能不知道。因此,我首先建议您仔细阅读它们。

以我的经验,还有两个模块itertoolscollections值得学习和使用。这是来自文档的信息。

itertools

  

此模块实现了许多受启发的迭代器构建块   由APL,Haskell和SML构建。每个都已改铸成   适用于Python的表单。

     

该模块标准化了一套快速的,内存高效的工具的核心   本身或结合起来有用的东西。他们在一起形成   一个“迭代器代数”,可以构造专门的   纯Python简洁高效地创建工具。

这是文档的屏幕快照,显示了其中的一小部分。 enter image description here

collections

  

此模块实现专门的容器数据类型,以提供   Python通用内置容器的替代品dict,   列出,设置和元组。

enter image description here

答案 1 :(得分:0)

这不需要任何外部程序包即可获取密钥,请使用以下定义获取给定值的所有密钥

def getKeys(dictionary, value):
    keys = []
    for key in dictionary.keys():
        if dictionary[key] is value:
            keys.append(key)
    return keys

a = {"One": 1, "Two": 2, "Three": 3, "Four": 3}
print getKeys(a, 3)

(或者)简单地

def getKeys(dictionary, value):
    return [key for key in dictionary.keys() if dictionary[key] is value]

这将返回所有具有相同值的键