如何解决是否有函数来规范化字符串并将其转换为整数/浮点数?
我有多个功能列表,这些功能是我要分析的字符串。 也就是说,例如:
[["0.5","0.4","disabled","0.7","disabled"],["feature1","feature2","feature4","feature1","feature3"]]
我知道如何将“ 0.5”之类的字符串转换为浮点数,但是有没有办法将此类列表“规范化”为整数或浮点值(在我的情况下,每个列表都是独立的)?我想得到这样的东西:
[[2,1,3,0],[0,2]]
有人知道如何实现这一目标吗?不幸的是,我还没有找到与此问题有关的任何东西。
解决方法
有点混乱,但可能应该做您想要的-使用字典来跟踪您使用过的列表中的项目。您可以使用生成器替换for循环,以减少繁琐的操作。
def track_items_in_list(test_list):
outer_list = []
# iterate through outer list
for _list in test_list:
# unique_count is an integer that corresponds to an item in your list
unique_count = 0
# used_tracker matches the unique_count with an item in your list
used_tracker = {}
inner_list = []
# iterate through inner list
for _item in _list:
# check the used_tracker to see if the item has been used - if so,replace with the corresponding v'unique count'
if _item in used_tracker:
inner_list.append(used_tracker[_item])
else:
# if not,add the count to the tracker
inner_list.append(unique_count)
used_tracker[_item] = unique_count
unique_count += 1
outer_list.append(inner_list)
track_items_in_list([["0.5","0.4","disabled","0.7","disabled"],["feature1","feature2","feature4","feature1","feature3"]])
# [[0,1,2,3,2],[0,3]]
,
使用字典和计数器将ID赋予新值并记住过去的ID:
import itertools,collections
def norm(lst):
d = collections.defaultdict(itertools.count().__next__)
return [d[s] for s in lst]
lst = [["0.5","feature3"]]
print(list(map(norm,lst)))
# [[0,3]]
或者通过枚举排序后的唯一值;但是请注意,"disables"
在数字值之后排序:
def norm_sort(lst):
d = {x: i for i,x in enumerate(sorted(set(lst)))}
return [d[s] for s in lst]
print(list(map(norm_sort,lst)))
[[1,3],2]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。