【问题标题】:Problem with inserting values in dictionary在字典中插入值的问题
【发布时间】:2019-07-13 07:58:36
【问题描述】:

在作为列表成员的字典中插入值时面临问题。 当我将用户输入作为索引时,它会更改所有索引的值。

nisl = int(input())
isl = [{'x1':None,'y1':None,'x2':None,'y2':None,}]*nisl
# isl = []
# ship[0]['x'] = '1'
for i in range(nisl):
    isl[i]['x1'],isl[i]['y1'],isl[i]['x2'],isl[i]['y2'] = map(int, input().split(' '))
    print(isl)

我得到的输出:

2
0 0 1 1
[{'x1': 0, 'y1': 0, 'x2': 1, 'y2': 1}, {'x1': 0, 'y1': 0, 'x2': 1, 'y2': 1}]
3 0 1 4
[{'x1': 3, 'y1': 0, 'x2': 1, 'y2': 4}, {'x1': 3, 'y1': 0, 'x2': 1, 'y2': 4}]

我的预期:

2
0 0 1 1
[{'x1': 0, 'y1': 0, 'x2': 1, 'y2': 1}, {'x1': None, 'y1': None, 'x2': None, 'y2': None}]
3 0 1 4
[{'x1': 0, 'y1': 0, 'x2': 1, 'y2': 1}, {'x1': 3, 'y1': 0, 'x2': 1, 'y2': 4}]

【问题讨论】:

    标签: python list dictionary python-3.6


    【解决方案1】:

    用途:

    isl = [{'x1': None, 'y1': None, 'x2': None, 'y2': None,} for _ in range(nisl)]
    

    代替:

    isl = [{'x1':None,'y1':None,'x2':None,'y2':None,}]*nisl 
    

    问题是您创建了一个字典列表,其中每个字典都有相同的引用。因此,当一个变化时,它也会反映在另一个上。

    作为一种解决方案,创建不同的字典,如第一个代码 sn-p 所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      相关资源
      最近更新 更多