Skip to main content
 首页 » 编程设计

python之变量 who 的引用总是指向 len(dict)

2025年05月04日14qq号

cardPayments={} 
rowNumber, NumOfCardPayments = 0, len(cardPayments) 
 
for x in range(5): 
    cardPayments.update({x:x}) 
    print(cardPayments) 
    print('cardPayments: '+str(NumOfCardPayments)+'\n') 

输出:

{0: 0} 
cardPayments: 0 
 
{0: 0, 1: 1} 
cardPayments: 0 
 
{0: 0, 1: 1, 2: 2} 
cardPayments: 0 
 
{0: 0, 1: 1, 2: 2, 3: 3} 
cardPayments: 0 
 
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4} 
cardPayments: 0 

我希望通过引用 NumOfCardPayments至 len(cardPayments)即cardPayments dict 的大小增加了 NumOfCardPayments 的 int 值也会增加在 for 循环中,情况似乎并非如此。

如何创建 NumOfCardPayments作为一个变量,作为 len(cardPayments) 的引用进行维护?

(请注意,我不想在 for 循环中简单地执行 NumOfCardPayments+=1)

请您参考如下方法:

想到的最接近的东西是一个属性,它在读取时自动评估一个函数:

>>> class LenDict(dict): 
...   @property 
...   def len(self): 
...     return len(self) 
... 
>>> d=LenDict() 
>>> d.len 
0 
>>> d[1]=2 
>>> d.len 
1 
>>> 

但是恕我直言,这并不比直接使用 len(d) 更清晰,当然效率也不高。也可以通过包装 setitem 以相反的方式放置钩子(Hook)。