分开对象并将它们成对

时间:2011-04-02 21:34:09

标签: python string

所以我有一个变量a,其中包含:

WOOP:2,DERV:2,WHAT:2,MATE:1

我想分开这些,所以看起来像这样:

[('WOOP',2),('DERV',2),('WHAT',2),('MATE',1)]

4 个答案:

答案 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())

希望这有帮助