繁体   English   中英

Python-从嵌套字典理解中填充字典

[英]Python - Populate dictionary from nested dictionary comprehension

我想通过迭代另外两个字典来填充字典。 我有一个可行的示例,我想知道是否有一种方法可以在字典理解中(主要是出于性能方面的考虑)或使其更具Python风格。 首先,这里是代码:

def get_replacement_map(dict_A, dict_B, min_sim):
    replacement_map = {}  # the dictionary i want to populate

    for key_A, value_A in dict_A.items():

        best_replacement = ()
        best_similarity = 0

        for key_B, value_B in dict_B.items():

            if key_B[0] != key_A[0]:

                # similarity(x,y) may return None so in that case assign sim = 0
                sim = similarity(value_A[0], value_B[0]) or 0
                if sim > best_similarity and sim > min_sim:
                    best_replacement = key_B
                    best_similarity = sim

                    if sim > 0.9:  # no need to keep looking, this is good enough!
                        break

        if best_replacement:
            synonym_map[key_A] = best_replacement

    return replacement_map 

它做一件简单的事情。 它计算两个字典的元素之间的相似度,并为每个元素找到最佳替换(如果相似度高于min_sim阈值)。 目的是建立替换字典。

我是Python的新手,所以我很确定这不是实现此目标的pythonic方法。 我已经看到通过使用领悟而不是for循环在性能上有很大的提高,所以我很好奇是否也可以使用嵌套字典领悟来完成此代码,并且这样做是否有意义。

如果不是一个好主意,我可以做些什么改进吗?

这是一个足够复杂的替换模式,如果您将其全部包含在一个代码行中,将很难阅读。 保持与使流程易于理解相关的结构和间距是解决此问题的更有效的方法。

至于性能提升,您可能不会看到问题中讨论的任何东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM