繁体   English   中英

将字符串列表转换为整数列表?

[英]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_traini是字符串时,它似乎并不喜欢它:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM