假设我有一个清单
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-z为1-26(小心大写等).
l = ['a','b','a','c']
k = [ord(x)-96 for x in l] # [1,2,1,3]
Run Code Online (Sandbox Code Playgroud)
再次,注意大写和非字母字符.
使用熊猫怎么样?
import pandas as pd
l = ['michael','michael','alice','carter']
pd.Series(l).astype('category').cat.codes.values
Run Code Online (Sandbox Code Playgroud)
为了回答编辑后的问题,即将字符串列表映射到唯一整数,必须首先找到唯一字符串,然后在原始字符串列表中进行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)
| 归档时间: |
|
| 查看次数: |
14522 次 |
| 最近记录: |