Как удалить символ из списка в словаре в python3 - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть словарь, который выглядит следующим образом

my_dict = {'name1': [1, 2], 'name2': [2, 3], 'name3': [3, 0]}

Я хочу снять квадратные скобки, чтобы он выглядел следующим образом

my_dict = {'name1': 1, 2, 'name2': 2, 3, 'name3': 3, 0}

Мой сценарий ниже пока приводит к ' Ошибка типа: ожидаемая строка или байтовоподобный объект ':

my_dict = {re.sub(r'[\w]+','',k):re.sub(r'[^\d]+','',v) for k,v in my_dict.items()}

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Последовательность [1, 2] (если вы правильно представили данные) представляет собой список целых чисел.

Если вы выполняете строковые функции в списке целых, вы получите ошибку типа:

>>> import re
>>> li=[1, 2]
>>> re.sub(r'\[', '', li)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python@3.8/3.8.2/Frameworks/Python.framework/Versions/3.8/lib/python3.8/re.py", line 208, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object

Вместо этого вам нужно преобразовать элементы в строки:

>>> list(map(str, li))
['1', '2']

Затем используйте .join, чтобы превратить список строк в одну строку:

>>> {k:', '.join(map(str, li)) for k,li in  my_dict.items()}
{'name1': '1, 2', 'name2': '2, 3', 'name3': '3, 0'}
0 голосов
/ 11 апреля 2020

Ба! Это работает

new_dict = str (my_dict) .replace ("[", "") .replace ("]", "")

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