繁体   English   中英

收到错误代码:TypeError:元组索引必须是整数或切片,而不是字典

[英]Reciveing the Error code: TypeError: tuple indices must be integers or slices, not dict

我在定义 function 时收到错误消息。我无法调试它。 请帮忙。

def _rescale(betweenness, n, normalized, directed=False, k=None, endpoints=False):

    if normalized:
        if endpoints:
            if n < 2:
                scale = None  # no normalization
            else:
                # Scale factor should include endpoint nodes
                scale = 1 / (n * (n - 1))
        elif n <= 2:
            scale = None  # no normalization b=0 for all nodes
        else:
            scale = 1 / ((n - 1) * (n - 2))
    else:  # rescale by 2 for undirected graphs
        if not directed:
            scale = 0.5
        else:
            scale = None
    if scale is not None:
        if k is not None:
            scale = scale * n / k
        for v in betweenness:
            betweenness[v] *= scale
    return betweenness

收到的错误片段是:

      scale = scale * n / 
     for v in betweenness: 
        betweenness[v] *= scale
  

返回介数

我认为这里的问题是您尝试使用元组中的元素访问元组中的元素。 我做了一个小例子给你看。

data = ("test", "hello", "friend")
for v in data:
    print(data[v])

打印以下错误:

Traceback (most recent call last):
  File "/Users/tcastron/PycharmProjects/<project>/test.py", line 4, in <module>
    print(data[v])
TypeError: list indices must be integers or slices, not str

要解决您的问题,您应该使用len function 来访问元组的每个部分:

for v in range(len(betweenness)):
    betweenness[v] *= scale

但据我从你的问题中了解到,betweennes 是一个元组,你不能将新变量分配给元组。

希望这会有所帮助。

暂无
暂无

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

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