Почему мой код не работает, добавляя значения к ключу - PullRequest
0 голосов
/ 14 октября 2019

Мой код ниже, просто пытаюсь реализовать defaultdict

out = defaultdict(list)
testdict = [{'local': '9134567890'},
{'local': '9134567890'},
{'global': '0134567890'},
{'others': '9034567890'},
{'others': '9034590'}]
for s in testdict:
    for k,v in s.items():
            out[k].append(out[v])   
out

Выход

defaultdict(list,
            {'0134567890': [],
             '9034567890': [],
             '9034590': [],
             '9134567890': [],
             'global': [[]],
             'local': [[], []],
             'others': [[], []]})

Желаемый OUt

defaultdict(<class 'list'>, {'local': ['9134567890', '9134567890'], 'global': ['0134567890'], 'others': ['9034567890', '9034590']})

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

out[v] всегда будет возвращать пустое list. Замените его на v:

...
out[k].append(out[v])   

Тогда значение out будет:

defaultdict(<type 'list'>, {'global': ['0134567890'], 'local': ['9134567890', '9134567890'], 'others': ['9034567890', '9034590']})
0 голосов
/ 14 октября 2019

Вы добавляете out[v] вместо v. Вы хотели сделать это:

for s in testdict:
    for k,v in s.items():
            out[k].append(v)   
...