不知道名网友 2022-03-23 01:49 采纳率: 50%
浏览 31
已结题

python赋值问题

#!/usr/bin/python
# -*-coding:utf-8 -*-
import random
class demo(object):
    def __init__(self):
        self.arr1 = []
        self.demo_list = ['第一个','第二个']
        self.arrfwPlaintiff = {"fwName": "", "fwAddress": "", "fwCardId": "", "fwPhone": "", "fwLitigantType2": ""}
    def arr(self):

        for i in range(2):
            self.arr1.append(self.arrfwPlaintiff)
            #self.arr1.append({"fwName": "", "fwAddress": "", "fwCardId": "", "fwPhone": "", "fwLitigantType2": ""})

        return self.arr1

    def getValue(self):
        self.arr()
        for key,val in enumerate(self.arr1):
            self.arr1[key]['fwName']  = self.demo_list[key]
            self.arr1[key]['fwLitigantType2'] = key
        print(self.arr1)

if __name__ == '__main__':

    demo().getValue()

为什么使用
self.arr1.append(self.arrfwPlaintiff) 两个'fwName': 的值都是 self.demo_list 的 '第二个',
结果错误:
[{'fwName': '第二个', 'fwAddress': '', 'fwCardId': '', 'fwPhone': '', 'fwLitigantType2': 1}, {'fwName': '第二个', 'fwAddress': '', 'fwCardId': '', 'fwPhone': '', 'fwLitigantType2': 1}]

而写死的
self.arr1.append({"fwName": "", "fwAddress": "", "fwCardId": "", "fwPhone": "", "fwLitigantType2": ""})
结果正确:
[{'fwName': '第一个', 'fwAddress': '', 'fwCardId': '', 'fwPhone': '', 'fwLitigantType2': 0}, {'fwName': '第二个', 'fwAddress': '', 'fwCardId': '', 'fwPhone': '', 'fwLitigantType2': 1}]

展开全部

  • 写回答

2条回答 默认 最新

  • ash062 2022-03-23 02:23
    关注

    因为self.arr1.append(self.arrfwPlaintiff)的self.arrfwPlaintiff为同一个对象(地址相同),仅保留最后一次的修改结果

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月23日
  • 修改了问题 3月23日
  • 修改了问题 3月23日
  • 展开全部