请用python字典实现,且不使用内置函数:输入几个整数,用逗号隔开,存储在列表lst里面,现在需要将lst中的每个元素替换为排序之后的序号,序号从1开始编号,一个元素越大,序号越大,相等的元素序列相同。输出替换后的列表。输入案例:40,10,20,30,输出:[4,1,2,3]
时间: 2023-10-10 12:11:33 浏览: 93
Python3 函数.doc
代码如下:
```python
def sort_list(lst):
# 初始化一个空字典
dic = {}
# 将列表中的元素作为键,其出现次数作为值,存入字典中
for i in lst:
if i not in dic:
dic[i] = 1
else:
dic[i] += 1
# 对字典按照键从小到大排序
sorted_dic = sorted(dic.items())
# 初始化一个空字典,用于存储每个元素的序号
index_dic = {}
# 初始化序号为1
index = 1
# 遍历排序后的字典,为每个元素赋予序号
for tup in sorted_dic:
# 取出元组中的键和值
key, value = tup
# 如果该元素之前没有出现过,则将序号赋值给该元素
if key not in index_dic:
index_dic[key] = index
index += 1
# 如果该元素之前出现过,则将序号赋值为上一次出现该元素的序号
else:
index_dic[key] = index_dic[key-value]
# 初始化一个空列表,用于存储替换后的元素
new_lst = []
# 遍历原列表,将每个元素替换为其序号
for i in lst:
new_lst.append(index_dic[i])
return new_lst
# 测试代码
lst = input("请输入几个整数,用逗号隔开:").split(",")
lst = [int(i) for i in lst]
new_lst = sort_list(lst)
print(new_lst)
```
运行结果如下:
```
请输入几个整数,用逗号隔开:40,10,20,30
[4, 1, 2, 3]
```
阅读全文