[英]Convert list of strings to list of integers?
我有一个要转换为简单整数数组的字符串列表。
例:
my_list = ['This is a string', 'This is a string', 'Hi! I am a string', 'I dislike strings', 'This is a string', 'Not a number']
转换成:
[0, 0, 1, 2, 0, 3]
my_list
中具有相同值的元素在转换后的数组中都将以相同的整数结尾。
其背后的想法是,我想利用以下语法(来自matplotlib)制作散点图,并且当y_train
或i
是字符串时,它似乎并不喜欢它:
X_train_small_pca[y_train == i, 0]
如上所述,如何将列表转换为整数?
应该这样做:
>>> my_list = ['This is a string', 'This is a string', 'Hi! I am a string', 'I
>>> dislike strings', 'This is a string', 'Not a number']
>>> mappedDict = dict(zip(set(my_list), xrange(len(my_list))))
>>> output = map(lambda x: mappedDict[x], my_list)
>>> output
[0, 0, 1, 2, 0, 3]
说明:首先删除列表中的重复项,然后将具有单个ID(在这种情况下为int
)的重复项映射到dict中。 之后,只需将列表中的每个值转换为映射的ID即可。
您的问题:将字符串列表转换为整数列表,其中相同的字符串应变为相同的整数(无论这些整数是什么)
列表的方法index("value")
返回找到“ value”的第一个索引。 对于列表中所有相同的字符串“值”,此方法将返回相同的整数。
>>> my_list = ['This is a string', 'This is a string', 'Hi! I am a string', 'I dislike strings', 'This is a string', 'Not a number']
>>> my_list.index('This is a string')
0
>>> indexes=[my_list.index(l) for l in my_list]
>>> print(indexes)
[0, 0, 2, 3, 0, 5]
my_list = ['This is a string', 'This is a string', 'Hi! I am a string', 'I dislike strings', 'This is a string', 'Not a number']
converter = {}
i = 1
for item in my_list:
if item not in converter:
converter[item] = i
i += 1
int_list = [converter[i] for i in my_list]
您想通过将函数应用于另一个列表的所有成员来创建一个列表。 这是一个列表理解。
l1 = ['1', '2', '3', '4', '5', '6']
l2 = [int(x) for x in l1]
print l2
[1、2、3、4、5、6]
当然,您会想到一些完全不同的功能,并且我不知道如何从这些字符串中获得这些数字,但是我认为这是无关紧要的。 列表理解将使用您想要的任何功能。
l1 = ['string', 'this', 'is']
def f(s):
return len(s)
l2 = [f(x) for x in l1]
print l2
[6,4,2]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.