Итак, у меня есть переменная a, которая содержит:
a
WOOP:2,DERV:2,WHAT:2,MATE:1
И я бы хотел разделить их так, чтобы это выглядело так:
[('WOOP',2),('DERV',2),('WHAT',2),('MATE',1)]
этот однострочник сделает это
L = [(f1, int(f2)) for x in a.split(",") for f1, f2 in (x.split(":"),)]
однако я, вероятно, вместо этого напишу
L = [] for x in a.split(","): f1, f2 = x.split(":") L.append((f1, int(f2)))
Попробуйте:
l = [ tuple(s.split(':')) for s in a.split(',') ] l = [ (t[0], int(t[1])) for t in l ]
Если вы согласны с [['WOOP',2], ['DERV',2], ... ], то еще проще:
[['WOOP',2], ['DERV',2], ... ]
l = [ s.split(':') for s in a.split(',') ] l = [ (t[0], int(t[1])) for t in l ]
Я бы не стал делать это в одной строке:
>>> s = 'WOOP:2,DERV:2,WHAT:2,MATE:1' >>> def convert_pair(pair): ... word,number = pair.split(':') ... return str(word),int(number) ... >>> [convert_pair(pair) for pair in s.split(',')] [('WOOP', 2), ('DERV', 2), ('WHAT', 2), ('MATE', 1)]
Хотя я не могу придумать лучшего названия для convert_pair в настоящее время.
convert_pair
Если a - строка, вы можете использовать что-то вроде этого:
result = map(lambda x: (x.split(":")[0], int(x.split(":")[1])), a.split(",")
Если это продиктовано, это намного проще:
result = zip(a.keys(), a.values())
Надеюсь, это поможет