所以我有一个变量a
,其中包含:
WOOP:2,DERV:2,WHAT:2,MATE:1
我想分开这些,所以看起来像这样:
[('WOOP',2),('DERV',2),('WHAT',2),('MATE',1)]
答案 0 :(得分:3)
这个单行将会这样做
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)))
答案 1 :(得分:2)
试试这个:
l = [ tuple(s.split(':')) for s in a.split(',') ]
l = [ (t[0], int(t[1])) for t in l ]
如果你对[['WOOP',2], ['DERV',2], ... ]
没问题,那就更简单了:
l = [ s.split(':') for s in a.split(',') ]
l = [ (t[0], int(t[1])) for t in l ]
答案 2 :(得分:1)
我不会在一行中这样做:
>>> 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
更好的名字。
答案 3 :(得分:0)
如果a是字符串,您可以使用以下内容:
result = map(lambda x: (x.split(":")[0], int(x.split(":")[1])), a.split(",")
如果是dict,那就简单了:
result = zip(a.keys(), a.values())
希望这有帮助