我有一个包含4个数字的列表,我需要将其转换为字母列表,并且每个集合都独立于上一个集合。然后,我想将字母字符串附加到新列表中。例如:
['001','001','001','001']转换为['A','A','A','A']
['014','013','013','023']转换为['A','B','B','C']
['001','001','001','003']转换为['A','A','A','B']
['001','001','001','004']转换为['A','A','A','B']
Polymer_data = Polymer_data.sort_values(['ID'])
for i in Polymer_data.ID:
print(i.split('-'))
['001', '001', '001', '001']
['001', '001', '001', '002']
['001', '001', '001', '003']
['001', '001', '001', '004']
...
['025', '022', '024', '025']
['025', '023', '024', '025']
['025', '024', '024', '025']
['025', '025', '025', '025']
预期结果应该是:
['A', 'A', 'A', 'A']
['A', 'A', 'A', 'B']
['A', 'A', 'A', 'B']
['A', 'A', 'A', 'B']
...
['A', 'B', 'C', 'A']
['A', 'B', 'C', 'A']
['A', 'B', 'B', 'A']
['A', 'A', 'A', 'A']
编辑:为使每个列表相互独立,因此将每个列表中的第一个唯一值分配为“ A”,将第二个唯一值分配为“ B”,等等。
此外,值的范围在001-025之间,“ ...”代表我未写出的所有值(不确定如何格式化)。因此,总共有195625种001-025可能组合的列表,排列方式为4。
答案 0 :(得分:1)
ord
从“ A”获取代码编号chr
将其转换为字符您可以从以下示例代码中了解以下内容:
lists = [['001', '001', '001', '002', '001', '003'],
['021', '022', '020', '021', '025', '022']]
result = []
for lista in lists:
code = ord('A')
listb = list(set(lista))
listb.sort()
result.append([chr(listb.index(x)+code) for x in lista])
print (result)
结果是
[['A', 'A', 'A', 'B', 'A', 'C'], ['B', 'C', 'A', 'B', 'D', 'C']]
答案 1 :(得分:0)
这可能一点都不优雅。唯一的好处是,如果您打算使用A, B, C, D
input_lists = [
['001', '001', '001', '001'],
['001', '001', '001', '002'],
['001', '001', '001', '003'],
['001', '001', '001', '004'],
['025', '022', '024', '025'],
['025', '023', '024', '025'],
['025', '024', '024', '025'],
['025', '025', '025', '025']
]
assignment = { '0' : 'A', '1': 'B', '2': 'C', '3': 'D'} # dictionary for value assignment
for i,input_list in enumerate(input_lists):
list_set = set(input_list) # create a set of unique values in each "sub" list
unique_list = list(list_set) # convert the set back to a list for indexing
for j,val in enumerate(input_list):
val_assign = assignment[str(unique_list.index(val))]
input_lists[i][j] = val_assign # write the assigned value directly back to the input lists
print(input_lists)