Как я могу добавить словарь в список, используя функцию добавления или другую функцию? - PullRequest
2 голосов
/ 24 марта 2020

Execusme, мне нужна ваша помощь!

Кодовый скрипт

tracks_ = []
track = {}

if category == 'reference':
  for i in range(len(tracks)):
    if len(tracks) >= 1:
      _tracks = tracks[i]
      track['id'] = _track['id']
      tracks_.append(track)
  print (tracks_)

дорожки Файл

[{'id': 345, 'mode': 'ghost', 'missed': 27, 'box': [0.493, 0.779, 0.595, 0.808], 'score': 89, 'class': 1, 'time': 3352}, {'id': 347, 'mode': 'ghost', 'missed': 9, 'box': [0.508, 0.957, 0.631, 0.996], 'score': 89, 'class': 1, 'time': 5463}, {'id': 914, 'mode': 'track', 'missed': 0, 'box': [0.699, 0.496, 0.991, 0.581], 'score': 87, 'class': 62, 'time': 6549}, {'id': 153, 'mode': 'track', 'missed': 0, 'box': [0.613, 0.599, 0.88, 0.689], 'score': 73, 'class': 62, 'time': 6549}, {'id': 588, 'mode': 'track', 'missed': 0, 'box': [0.651, 0.685, 0.958, 0.775], 'score': 79, 'class': 62, 'time': 6549}, {'id': 972, 'mode': 'track', 'missed': 0, 'box': [0.632, 0.04, 0.919, 0.126], 'score': 89, 'class': 62, 'time': 6549}, {'id': 300, 'mode': 'ghost', 'missed': 6, 'box': [0.591, 0.457, 0.74, 0.498], 'score': 71, 'class': 62, 'time': 5716}]

Исходя из кодовой надписи и вышеприведенного ввода, я хочу распечатать track_, и результат будет

[{'id': 300}, {'id': 300}, {'id': 300}, {'id': 300}, {'id': 300}, {'id': 300}, {'id': 300}]

, но результат распечатки должен быть таким:

[{'id': 345}, {'id': 347},{'id': 914}, {'id': 153}, {'id': 588}, {'id': 972}, {'id': 300}, ]

1 Ответ

0 голосов
/ 24 марта 2020

вы добавляете в свой список track_ тот же самый диктат, который приводит к тому, что в вашем списке есть только ссылки на один и тот же диктат, практически у вас есть только один диктант в вашем списке tracks_ и любая модификация к диктовке track будет отражено во всех элементах вашего списка, чтобы исправить, вы должны создавать новый дикт на каждой итерации:

if category == 'reference' and len(tracks) >= 1:
    for d in tracks:
            tracks_.append({'id' : d['id']})

вы можете использовать понимание списка:

tracks_ = [{'id': t['id']} for t in tracks]
tracks_

вывод:

[{'id': 345},
 {'id': 347},
 {'id': 914},
 {'id': 153},
 {'id': 588},
 {'id': 972},
 {'id': 300}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...