小编sum*_*mer的帖子

Python:字典中的键类型应该是不可变的,但是为什么我可以让节点类的实例作为键?

无论是Python中的字典还是Java中的哈希图,键都可以是节点类的实例。

但是当我阅读 python 教程时,它说:

键在字典中是唯一的,而值可能不是。字典的值可以是任何类型,但键必须是不可变的数据类型,例如字符串、数字或元组。

感到困惑!# 抱歉我的表达不好!:(

示例代码是:

class RandomListNode:
    def __init__(self, x):
        self.label = x
        self.next = None
        self.random = None

dict = {}
node1 = RandomListNode(10)
node2 = RandomListNode(5)
dict[node1] = node2
print dict[node1].label #5
Run Code Online (Sandbox Code Playgroud)

总结:Hashable(哈希值不会改变)或immutable对象可以是key value。参考: https: //docs.python.org/2/glossary.html#term-hashable

python dictionary

4
推荐指数
1
解决办法
1167
查看次数

Python:无法交换列表中的两个元素

有没有人可以帮我看看这段代码.我试图在leetcode中解决第一个缺失的正面问题.但是这个代码导致无限循环,因为我发现我无法交换A [i]和A [A [i] -1].但我测试使用这个简单的代码交换到列表中的元素:

A = [2,1]
A[0], A[1] = A[1], A[0]
print A # A = [1,2]
Run Code Online (Sandbox Code Playgroud)

我不知道错误是什么:(

def firstMissingPositive(self, A):
    i = 0
    length = len(A)
    while i < length:
        if A[i] >= 1 and A[i] <= length:
            if A[i] != i+1 and A[A[i]-1] != A[i]:
                A[i], A[A[i]-1] = A[A[i]-1], A[i]
            else:
                i += 1
        else:
            i += 1
    for i in range(length):
        if A[i] != i+1:
            return i+1
    return length + 1
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
66
查看次数

标签 统计

python ×2

dictionary ×1