2011-03-09 92 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}