如何防止将字符串分成字符列表?

时间:2019-03-05 20:59:48

标签: python list python-2.x

我有一个可能包含1个或多个元素的列表。如果下面的代码在列表中包含多个元素,则可以正常工作。但是,如果只有一个元素,它将分解为字符列表。

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

li = my_dict.get('fruit')

for fruit in li:
    print fruit

3 个答案:

答案 0 :(得分:1)

即使只有一个元素,只要将其括在方括号中,它也将被视为列表中的单个项目。所以这个:

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

将按预期工作,同时:

my_dict = {'fruit': 'apple'}

不会。

(而且,字典键的名称(例如fruit)应加引号,因为它们不是变量。)

答案 1 :(得分:1)

只需创建一个包含单个元素的列表

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

li = my_dict.get('fruit')

for fruit in li:
    print(fruit)

然后你得到

apple

如果您将字典更改为

my_dict = {'fruit': 'apple'}

当您遍历该对象时,将获得该字符串的每个字符。

答案 2 :(得分:0)

您应确保一致的数据类型。您假定带有for循环的元素列表。传递字符串时,Python会将其拆分为字符。

您应该使用类似

(define zero (lambda (f) (lambda (x) x)))

(define (add-1 n)
  (lambda (f) (lambda (x) (f ((n f) x)))))

(define one (lambda (f) (f (f x))))

(define (add m n)
  (lambda (f) (lambda (x) ((m f) ((n f) x)))))

(define (church-numeral x)
  (define (iter result x count)
    (if (< count x) 
    (iter (add-1 result x (+ 1 count)))
    count))
  (iter zero x 0))

(church-numeral 7) 

仅使用一个元素时。

如果您不能确保将列表作为字典值,则必须手动检查类型。

 preferenceManager.preferenceDataStore = dataStore
    setPreferencesFromResource(R.xml.account_settings, rootKey)