#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']]
答案 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(','))