Python: Как убрать квадратные скобки в словаре? - PullRequest
0 голосов
/ 22 мая 2019

Я хочу получить значения в словаре и добавить его в список, но я понятия не имею, как убрать квадратные скобки, поэтому в другом случае получаются квадратные скобки: [['display', 'exhibit', 'convey', 'communicate', 'manifest', 'disclose']]. Есть ли какой-нибудь метод, который я могу использовать, чтобы избавиться от этих скобок?

word_dict = {'show': ['display', 'exhibit', 'convey', 'communicate', 'manifest', 'disclose']}


def main():
    get_list = remove_word(word_dict)
    print(get_list)

def remove_word(word_dict):

    synonyms = word_dict.values()
    new_list = []
    for i in synonyms:
        new_list.append(i)

    return new_list

main()

Ответы [ 6 ]

2 голосов
/ 22 мая 2019

Вы добавляете значения (которые являются списками) в новый список, создавая список списков.

Вы должны сделать свой список плоским, используя extend, а не append

new_list = []
for i in synonyms:
    new_list.extend(i)
1 голос
/ 22 мая 2019

Вы можете добавить еще один цикл for для добавления слова в список, а добавляя список в список

def remove_word(word_dict):
    synonyms = word_dict.values()
    new_list = []
    for i in synonyms:
        for word in i:
            new_list.append(word)

    return new_list
1 голос
/ 22 мая 2019

Попробуйте, это вернет всегда список:

def remove_word(word_dict):
    synonyms = word_dict.values()
    new_list = []
    for i in synonyms:
        if isinstance(i,list):
            new_list.extend(i)
        else:
            new_list.append(i) 

    return new_list

Где extend и append имеют разное-2 рабочее поведение

https://docs.python.org/3/tutorial/datastructures.html

1 голос
/ 22 мая 2019

просто извлеките значения в виде списка, например:

word_dict = {'show': ['display', 'exhibit', 'convey', 'communicate', 'manifest', 'disclose']}


def main():
   get_list = remove_word(word_dict)
   print(get_list)

def remove_word(word_dict):

   # synonyms = word_dict.values()

   return word_dict['show']

   # new_list = []
   # for i in synonyms:
   #     new_list.append(i)

   # return new_list

main()

выход:

['display', 'exhibit', 'convey', 'communicate', 'manifest', 'disclose']
1 голос
/ 22 мая 2019
word_dict = {'show': [['display', 'exhibit', 'convey', 'communicate', 'manifest', 'disclose']]}
def main():
    get_list = remove_word(word_dict)
    print(get_list)

def remove_word(word_dict):
    for i in word_dict:
        word_dict.update({i:[ j for k in word_dict[i] for j in k]})
    return word_dict
main()

выход

{'show': ['display', 'exhibit', 'convey', 'communicate', 'manifest', 'disclose']}
1 голос
/ 22 мая 2019

Вы можете изменить def, например:

Нет необходимости создавать список, так как dict.values само дает list.

Значение в word_dict, содержащее list и dict.values, само по себе дает list.Так что это список списка.

Вы можете получить доступ к одному списку, используя индекс 0

def remove_word(word_dict):
    synonyms = word_dict.values()
    return list(synonyms)[0]
...