python - HashMap 在Python字典中传递引用

标签 python dictionary hashmap pass-by-reference defaultdict

我有两个函数,即 funct#1 和 funct#2 (Python 3.x),并且都有相同的返回值。 我是 Python 的新手,对 C/C++ 指针的概念知之甚少。更改一个变量不会反射(reflect)到其他变量,除非它不是“通过引用传递”,即指针变量。

#<funct#1>

def normalize_vector_list(vector_list):

    normal_vector_list = vector_list

    for idx, vector in enumerate(vector_list):
        vector_normal = cosine_normalization(vector.values())

        for key in vector.keys():
            vector[key] = vector[key]/vector_normal

        normal_vector_list[idx] = vector

    return normal_vector_list



#<funct2>

def normalize_vector_list(vector_list):

    normal_vector_list = vector_list

    for vector in vector_list:
        vector_normal = cosine_normalization(vector.values())

        for key in vector.keys():
            vector[key] = vector[key]/vector_normal

    return normal_vector_list

顺便说一下,上面提到的另一个函数,即cosine_normalization()是:

def cosine_normalization(vector):

    return math.sqrt(sum(i**2 for i in vector))

输入参数:vector_list

vector_list 是一个字典列表,其中vector_list[0] 位于

{“有争议”:3.2988353690005856,"new":0.8321110382957757,“规则”:2.57246254081232,“专利”:27.617294602624597,“基于计算机”:5.993462 549770655, '发明': 10.075902209486438, '放置': 1.7977654932882667, '保留':4.981825347696424,'到期':2.209272915852394,'最后':0.8984861072406485,'分钟':2.5922651681085,'干预':4.607168188650764,'波兰': 10.23598762483351}

输出: 输出是归一化向量列表,其中每个值均通过除以所有值的平方和进行归一化。例如。 normal_vector_list[121] 为{'high-speed': 0.05849977431100451, 'net': 0.1026094844409006, 'connection': 0.232742384495927, 'proving': 0.060052144835127615 ,“流行”:0.03800614678175985,“曾经”:0.034539324332692536 ,'报告':0.026431249541766944,'人':0.09935938942455483,'签名':0.04328893168172482,'宽带':0.41893629209266864,'最后':0.0124 08508988158977, '三': 0.03841976800723183......}

最佳答案

通过将 listdict 传递给函数,您将传递实际对象而不是它的副本。

您必须首先创建一个copy对象,然后对其进行操作。

import copy

def normalize_vector_list(vector_list):

    normal_vector_list = copy.deepcopy(vector_list)

    for idx, vector in enumerate(vector_list):
        vector_normal = cosine_normalization(vector.values())

        for key in vector.keys():
            vector[key] = vector[key]/vector_normal

        normal_vector_list[idx] = vector

    return normal_vector_list

关于python - HashMap 在Python字典中传递引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59475940/

相关文章:

python - Pandas dataframe to dict,同时保留重复行

python - Keras 创建三个类而不是两个

algorithm - 检查是否可以快速用给定的字母组成单词

python:在函数内表现不佳的dict-错误的TypeError

java - 两个 HashMap 的一般合并

python - Tensorflow:保存和恢复 session - 多个变量

python - 树莓派 i2c 读/写错误

java - 来自 Map<String, List<String>> 的速度表

c - C 中的通用哈希表

java - 将当前项目位置传递给内部类?