【问题标题】:Dictionaries appended and updating create clones附加和更新字典创建克隆
【发布时间】:2021-09-16 12:03:30
【问题描述】:

我需要它来停止克隆并将新词典添加到列表中

我什至尝试过 update 来更新字典,但没有成功

import random

# This line creates a set with 6 random numbers
#We use a 22 range or similar, otherwise the players will not get enough correct numbers for creating a solution in a learning enviroment.
lottery_numbers = set(random.sample(range(22), 6))

# Here are your players; they all decided to get their numbers randomly find out who has the most numbers matching lottery_numbers!
players = [
    {'name': 'Rolf', 'numbers': set(random.sample(range(22), 6))},
    {'name': 'Charlie', 'numbers':set(random.sample(range(22), 6))},
    {'name': 'Anna', 'numbers': set(random.sample(range(22), 6))},
    {'name': 'Jen', 'numbers': set(random.sample(range(22), 6))}
]

num_player = [1000]
dicc_A = {}


print("Lottery numbers ", lottery_numbers)
print("")
for a in players:
  print("Line by line",a)
  print("")
  for i,j in a.items():
    if i == "name":
      dicc_A["Name"] = j
      print("name Dicc: ", dicc_A)
    if i == "numbers":
      dicc_A["Num"] = j.intersection(lottery_numbers)


      print("  xxxxxxxxxx  NUMPLAYER before APPEND inside FOR ",num_player)
      
      print("******number Dicc: ", dicc_A)
      num_player.append(dicc_A)

      print("")
      print("  ///////// NUMPLAYER after APPEND inside FOR ",num_player)
    
    

这是输出****************

彩票号码 {5, 9, 13, 14, 19, 20}

逐行{'name': 'Rolf', 'numbers': {2, 3, 5, 11, 12, 19}}

名称 Dicc: {'Name': 'Rolf'}

xxxxxxxxx NUMPLAYER before APPEND inside FOR [1000] ******number Dicc: {'Name': 'Rolf', 'Num': {19, 5}}

///////// FOR [1000, {'Name': 'Rolf', 'Num': {19, 5}}] 内的 APPEND 后的 NUMPLAYER

逐行{'name': 'Charlie', 'numbers': {0, 4, 7, 8, 17, 20}}

name Dicc: {'Name': 'Charlie', 'Num': {19, 5}}

xxxxxxxxx NUMPLAYER before APPEND inside FOR [1000, {'Name': 'Charlie', 'Num': {20}}] ******number Dicc: {'Name': 'Charlie', 'Num': {20}}

///////// FOR [1000, {'Name': 'Charlie', 'Num': {20}}, {'Name': 'Charlie', 'Num' 后的 NUMPLAYER : {20}}]

逐行{'name': 'Anna', 'numbers': {4, 5, 6, 10, 16, 17}}

名称 Dicc:{'Name':'Anna','Num':{20}}

xxxxxxxxx NUMPLAYER before APPEND inside FOR [1000, {'Name': 'Anna', 'Num': {5}}, {'Name': 'Anna', 'Num': {5}}] ******number Dicc: {'Name': 'Anna', 'Num': {5}}

///////// NUMPLAYER 后在 FOR [1000, {'Name': 'Anna', 'Num': {5}}, {'Name': 'Anna', 'Num' : {5}}, {'Name': 'Anna', 'Num': {5}}]

逐行{'name': 'Jen', 'numbers': {2, 4, 5, 8, 9, 10}}

name Dicc: {'Name': 'Jen', 'Num': {5}}

xxxxxxxxx NUMPLAYER before APPEND inside FOR [1000, {'Name': 'Jen', 'Num': {9, 5}}, {'Name': 'Jen', 'Num': {9, 5} }, {'Name': 'Jen', 'Num': {9, 5}}] ******number Dicc: {'Name': 'Jen', 'Num': {9, 5}}

///////// FOR [1000, {'Name': 'Jen', 'Num': {9, 5}}, {'Name': 'Jen', ' Num':{9, 5}},{'Name':'Jen','Num':{9, 5}},{'Name':'Jen','Num':{9, 5}}]

【问题讨论】:

  • 您的问题是什么?
  • 我需要它来停止克隆并将新词典添加到列表中我什至尝试过 update 以更新词典但没有用

标签: python-3.x list dictionary append


【解决方案1】:

哦,对不起。现在我看到将字典附加到您需要创建副本的列表中 所以解决方案就是这样


import random

# This line creates a set with 6 random numbers
#We use a 22 range or similar, otherwise the players will not get enough correct numbers for creating a solution in a learning enviroment.
lottery_numbers = set(random.sample(range(22), 6))

# Here are your players; they all decided to get their numbers randomly find out who has the most numbers matching lottery_numbers!
players = [
    {'name': 'Rolf', 'numbers': set(random.sample(range(22), 6))},
    {'name': 'Charlie', 'numbers':set(random.sample(range(22), 6))},
    {'name': 'Anna', 'numbers': set(random.sample(range(22), 6))},
    {'name': 'Jen', 'numbers': set(random.sample(range(22), 6))}
]

num_player = [1000]
dicc_A = {}


print("Lottery numbers ", lottery_numbers)
print("")
for a in players:
  print("Line by line",a)
  print("")
  for i,j in a.items():
    if i == "name":
      dicc_A["Name"] = j
      print("name Dicc: ", dicc_A)
    if i == "numbers":
      dicc_A["Num"] = j.intersection(lottery_numbers)


      print("  xxxxxxxxxx  NUMPLAYER before APPEND inside FOR ",num_player)
      
      print("******number Dicc: ", dicc_A)


      dictionary_copy = dicc_A.copy()
      num_player.append(dictionary_copy)




      print("")
      print("  ///////// NUMPLAYER after APPEND inside FOR ",num_player)
    
    
    
    print("")
    print("")



    
        



******************输出

彩票号码 {2, 7, 12, 17, 20, 21}

逐行{'name': 'Rolf', 'numbers': {3, 4, 9, 12, 13, 14}}

名称 Dicc: {'Name': 'Rolf'}

xxxxxxxxx NUMPLAYER before APPEND inside FOR [1000] ******number Dicc: {'Name': 'Rolf', 'Num': {12}}

///////// NUMPLAYER 在 FOR [1000, {'Name': 'Rolf', 'Num': {12}}] 内的 APPEND 后

逐行{'name': 'Charlie', 'numbers': {4, 8, 10, 12, 13, 18}}

name Dicc:{'Name':'Charlie','Num':{12}}

xxxxxxxxx NUMPLAYER before APPEND inside FOR [1000, {'Name': 'Rolf', 'Num': {12}}] ******number Dicc: {'Name': 'Charlie', 'Num': {12}}

///////// FOR [1000, {'Name': 'Rolf', 'Num': {12}}, {'Name': 'Charlie', 'Num' 后的 NUMPLAYER : {12}}]

逐行{'name': 'Anna', 'numbers': {10, 14, 16, 17, 20, 21}}

名称 Dicc:{'Name':'Anna','Num':{12}}

xxxxxxxxx NUMPLAYER before APPEND inside FOR [1000, {'Name': 'Rolf', 'Num': {12}}, {'Name': 'Charlie', 'Num': {12}}] ******number Dicc: {'Name': 'Anna', 'Num': {17, 20, 21}}

///////// FOR [1000, {'Name': 'Rolf', 'Num': {12}}, {'Name': 'Charlie', 'Num' 后的 NUMPLAYER : {12}}, {'Name': 'Anna', 'Num': {17, 20, 21}}]

逐行{'name': 'Jen', 'numbers': {3, 6, 8, 9, 13, 14}}

name Dicc: {'Name': 'Jen', 'Num': {17, 20, 21}}

xxxxxxxxx NUMPLAYER before APPEND inside FOR [1000, {'Name': 'Rolf', 'Num': {12}}, {'Name': 'Charlie', 'Num': {12}}, {'姓名':'安娜','号码':{17、20、21}}] ******number Dicc: {'Name': 'Jen', 'Num': set()}

///////// FOR [1000, {'Name': 'Rolf', 'Num': {12}}, {'Name': 'Charlie', 'Num' 后的 NUMPLAYER : {12}}, {'Name': 'Anna', 'Num': {17, 20, 21}}, {'Name': 'Jen', 'Num': set()}]

【讨论】:

    猜你喜欢
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 2012-04-19
    • 2011-12-22
    • 2017-10-05
    相关资源
    最近更新 更多