拆分字符串(如果包含逗号),否则使用列表推导返回字符串

时间:2019-12-23 15:26:53

标签: python string split list-comprehension

#sample input 
dict_ = {'country': {'0': 'a,b,c','1': 'xyz'}}

country_name = []
for country in dict_['country'].values():
    if ',' in country:
        country_name.append(country.split(','))
    else:
       country_name.append([country])
#op of above code
[['a', 'b', 'c'], ['xyz']] 

如何使用列表理解来编写以上代码,到目前为止,我已经尝试了以下方法。我需要在这些列表理解中添加其他条件

[x.split(',') for x in dict_['country'].values() if ',' in x] 

使用列表理解功能的预期输出

[['a', 'b', 'c'], ['xyz']]

1 个答案:

答案 0 :(得分:4)

您的问题是不包含逗号的值未被使用,因此您需要一个else

[x.split(',') if ',' in x else [x] for x in dict_['country'].values()]

但是这里有一个特殊情况:使用str.split总是返回list。如果原始文本中没有定界符,您将得到一个包含1的列表元素

>>> "a,b,c".split(',')
['a', 'b', 'c']
>>> "abc".split(',')
['abc']
>>> "a,b,c".split(',', 1) # maxsplit param
['a', 'b,c']

您可以使用它来消除条件

[x.split(',') for x in dict_['country'].values()]

您的原始代码就是:

country_name = []
for country in dict_['country'].values():
    country_name.append(country.split(','))
相关问题