Как предотвратить взлом строки в список символов? - PullRequest
2 голосов
/ 05 марта 2019

У меня есть список, который может содержать 1 или несколько элементов.Приведенный ниже код отлично работает, если в списке несколько элементов.Однако, если есть только один элемент, он разбивает его на список символов.

my_dict = {fruit: ['apple', 'banana', 'carrot']}

li = my_dict.get('fruit')

for fruit in li:
    print fruit

Ответы [ 3 ]

1 голос
/ 06 марта 2019

Просто создайте список с одним элементом

my_dict = {'fruit': ['apple']}

li = my_dict.get('fruit')

for fruit in li:
    print(fruit)

И вы получите

apple

Если вы измените свой словарь на

my_dict = {'fruit': 'apple'}

, вы получитекаждый символ этой строки, когда вы зацикливаетесь на этом объекте.

1 голос
/ 06 марта 2019

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

my_dict = {'fruit': ['apple']}

будет работать так, как вы ожидаете, а вот это:

my_dict = {'fruit': 'apple'}

не будет.

(Также имена ваших словарных ключей (например,fruit) следует заключать в кавычки, поскольку они не являются переменными.)

0 голосов
/ 06 марта 2019

Вы должны обеспечить согласованные типы данных . Вы принимаете список элементов с циклом for. Когда вы передаете строку, Python разбивает ее на символы.

Вы должны использовать что-то вроде

my_dict = {'fruit': ['apple']}

при работе только с одним элементом.

Если вы не можете указать список в качестве значения словаря, вы должны проверить тип вручную.

my_dict = {'fruit': 'apple'}

li = my_dict.get('fruit')

if type(li) is list:
    for fruit in li:
        print(fruit)
else:
    print(li)
...