2011-03-09 59 views
0

有没有简短的方法来做到这一点?将字符串集合映射到整数的pythonic方法

g_proptypes = { 
    'uint8' : 0 
    'sint8' : 1, 
    'uint16' : 2, 
    'sint16' : 3, 
    'uint32' : 4, 
... # more strings 
} 

该字典是必要的,因为我将字符串与我并需要找到相应的整数。

回答

6

如果你有你的字符串可迭代,你可以这样做:

g_proptypes = dict((string, i) for i, string in enumerate(string_list)) 
+0

@Kenny:我的坏,修复。 – 2011-03-09 09:29:08

+0

我查过了。它给出{0:'uint8',1:'sint8'...}。我需要相反的。 – Manish 2011-03-09 09:30:24

+0

@Manish:我刚刚修好了,现在应该可以工作。 – 2011-03-09 09:31:15

0

你能做到这一点,如果这个整数是连续的:http://codepad.org/o7ryZ09O

myList = ['uint8','sint8','uint16','sint16','uint32'] 
myStr = 'uint16' 
myNum = myList.index(myStr); 
print myNum; 
+0

如果是故意的,他被映射到字符串数组索引可能要问OP有用。 – mduvall 2011-03-09 09:21:33

+0

是的,谢谢。 @cowboy已经写了一个优雅的解决方案 – DhruvPathak 2011-03-09 09:23:15

1

>>> lst = ['uint8','sint8','unit16','sint16','uint32','etc']

>>> g_proptypes = dict(map(reversed,enumerate(lst)))

>>> g_proptypes

{'sint16': 3, 'unit16': 2, 'uint8': 0, 'etc': 5, 'sint8': 1, 'uint32': 4}

相关问题