Python映射字符串列表到整数列表

Mic*_*ael 6 python

假设我有一个清单

l = ['michael','michael','alice','carter']
Run Code Online (Sandbox Code Playgroud)

我想将它映射到以下内容:

k = [1,1,2,3]
Run Code Online (Sandbox Code Playgroud)

其中michael对应于1,alice对应于2等.在Python中是否有一个函数可以轻松完成此操作?

mat*_*fee 11

看一下ord,给出给定角色的unicode号码:

>>> letters = ['a','b','c','d','e','f','g']
>>> [ord(x) for x in letters]
[97, 98, 99, 100, 101, 102, 103]
Run Code Online (Sandbox Code Playgroud)

所以你可以做到ord(x)-96转换a-z1-26(小心大写等).

l = ['a','b','a','c']
k = [ord(x)-96 for x in l] # [1,2,1,3]
Run Code Online (Sandbox Code Playgroud)

再次,注意大写和非字母字符.

  • 这仅适用于字符列表,不适用于 OP 问题中的字符串列表。 (3认同)

Omr*_*mri 7

使用熊猫怎么样?

import pandas as pd
l = ['michael','michael','alice','carter']
pd.Series(l).astype('category').cat.codes.values
Run Code Online (Sandbox Code Playgroud)


cha*_*esh 5

为了回答编辑后的问题,即将字符串列表映射到唯一整数,必须首先找到唯一字符串,然后在原始字符串列表中进行1-1字符串映射到整数。例如,

s = ['michael','michael','alice','carter']
Run Code Online (Sandbox Code Playgroud)

然后是唯一的字符串{'michael','alice','carter'}。现在,通过1-1映射将这些字符串转换为整数,就像{'michael','alice','carter'} =[1,2,3]使用dictionary一样{'michael':1,'alice':2,'carter':3}。第三步,遍历原始字符串列表;在字典中的字符串中搜索相应的整数,然后将该字符串替换为该整数。

s=['michael','michael','alice','carter']

mydict={}
i = 0
for item in s:
    if(i>0 and item in mydict):
        continue
    else:    
       i = i+1
       mydict[item] = i

k=[]
for item in s:
    k.append(mydict[item])
Run Code Online (Sandbox Code Playgroud)

输出:

k=[1, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)