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的大小会增加,因此for循环期间NumOfCardPayments
的int值会出现不是这样的。
如何将NumOfCardPayments
创建为保留为len(cardPayments)
参考的变量?
(请注意,我不想在for循环中单独执行NumOfCardPayments+=1
答案 0 :(得分:4)
最让人想到的是一个属性,它会在读取时自动评估函数:
>>> class LenDict(dict):
... @property
... def len(self):
... return len(self)
...
>>> d=LenDict()
>>> d.len
0
>>> d[1]=2
>>> d.len
1
>>>
但恕我直言,这并不比直接使用len(d)
更清楚,当然也不那么有效。也可以通过包裹setitem来相反地放置钩子。
答案 1 :(得分:2)
我认为不可能。在Python中,变量包含指向对象的指针。整数对象是不可变的。因此,更改numOfCardPayments值的唯一方法是将其绑定到新对象...
答案 2 :(得分:1)
您可以创建一个简单的lambda对象来返回特定对象的长度
def len_follower(target_object):
return lambda : len(target_object)
然后将参数target_object
设置为cardPayments
>>>cardPayments = {}
>>>NumOfCardPayments = len_follower(cardPayments)
>>>NumOfCardPayments()
0
>>>cardPayments[1] = 0
>>>NumOfCardPayments()
1