Если у меня в словаре 2 списка, как добавить их оба сразу? - PullRequest
0 голосов
/ 13 июля 2020
    self.W = {}
    self.W[A] = {'x':[], 'y':[]}

Я хочу сделать следующее:

   self.W[A]['x'].append(X)

и:

   self.W[A]['y'].append(Y),

сразу.

Как сделать и то, и другое в одной команде?

Изменить:

Позвольте мне написать это более понятно:

WEAPONS = {}
WEAPONS['launcher'] = {'idle_img' : [ "pic1.png", "pic2.png", "pic3.png"],
                       'shoot_img' : ['img1.png', 'img2.png', 'img3.png'],
              

                   

WEAPONS['pistol']  =  {'idle_img' : [ "another_pic1.png", "another_pic2.png",'another_pic3'],
                       'shoot_img' : ['another_img1.png', 'you know.png', 'abcxyz.png']}

теперь у меня есть другой dict:

self.another_dict = {}
self.another_dict['launcher'] = {'idle_img' : [],
                                 'shoot_img' : [],
              

                   

self.another_dict['pistol']  =  {'idle_img' : [],
                                 'shoot_img' : []}

Сейчас , Я хочу добавить эти изображения из WEAPONS['pistol']['idle_img'] в self.another_dict['pistol']['idle_img']

, также сделайте это с помощью ['Shot_img'] (и многих подобных ['something_img']). Я могу сделать это. по одному:

for l in WEAPONS:
        for i in self.WEAPONS[l]['idle_img']:
          self.another_dict[l]['idle_img'].append(i)

но так долго, если я сделаю это для всех этих ['_img']

Итак, я предполагаю, что должен быть способ сделать это сразу, или будет много писанины.

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Думаю, вы найдете dict().from_keys() полезным.

W = {}.fromkeys(['x', 'y'], [])

W['x'].append('hello')
{'x': ['hello'], 'y': ['hello']}

Он создает словарь с предоставленными ключами, и их значения по умолчанию являются одним и тем же объектом (если они изменяются). Итак, добавление одного добавит другого. Но будьте осторожны, они действительно указывают на один и тот же объект, поэтому вам придется делать дополнительные шаги, чтобы обрабатывать их по отдельности в будущем.

0 голосов
/ 13 июля 2020

черт возьми, я не могу поверить, что использую l oop дважды, но больше не использую. вот как я это решаю:

for l in WEAPONS:
  for t in self.another_dict[l]
    for i in self.WEAPONS[l][t]:
      self.another_dict[l][t].append(i)

спасибо за весь ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...