Python – 使用字典替换数字
有时,在使用Python Dictionary 时,我们可能会遇到需要替换 List 中每个元素的数字的问题。这可能会导致数字的变化。这种问题可能发生在数据预处理领域。让我们讨论可以执行此任务的某些方式。
Input : test_list = [45, 32], dig_map = {4 : 2, 3 : 8, 2 : 6, 5 : 7}
Output : [27, 86]
Input : test_list = [44, 44], dig_map = {4 : 2}
Output : [22, 22]
方法#1:使用循环
这是解决这个问题的粗暴方法。在此,我们遍历 list 中的每个元素,并在将 number 转换为字符串后使用映射值重新创建它。
# Python3 code to demonstrate working of
# Substitute digits using Dictionary
# Using loop
# initializing list
test_list = [45, 32, 87, 34, 21, 91]
# printing original list
print("The original list is : " + str(test_list))
# initializing digit mapping
dig_map = {1 : 4, 4 : 2, 3 : 8, 2 : 6, 7 : 5, 9 : 3, 8 : 9, 5 : 7}
# Substitute digits using Dictionary
# Using loop
temp = []
for idx, ele in enumerate(test_list):
sub1 = str(ele)
if len(sub1) > 1:
sub2 = ""
for j in sub1:
if int(j) in dig_map:
sub2 += str(dig_map[int(j)])
test_list[idx] = int(sub2)
else:
if ele in dig_map:
test_list[idx] = dig_map[ele]
# printing result
print("List after Digit Substitution : " + str(test_list))
输出 :
The original list is : [45, 32, 87, 34, 21, 91]
List after Digit Substitution : [27, 86, 95, 82, 64, 34]
方法 #2:使用join() + list comprehension + str() + int()
上述功能的组合可以用来解决这个问题。在此,我们使用 str() 和 int() 执行相互转换的任务,join 和 list comprehension 用于以简写形式绑定逻辑。
# Python3 code to demonstrate working of
# Substitute digits using Dictionary
# Using join() + list comprehension + str() + int()
# initializing list
test_list = [45, 32, 87, 34, 21, 91]
# printing original list
print("The original list is : " + str(test_list))
# initializing digit mapping
dig_map = {1 : 4, 4 : 2, 3 : 8, 2 : 6, 7 : 5, 9 : 3, 8 : 9, 5 : 7}
# Substitute digits using Dictionary
# Using join() + list comprehension + str() + int()
res = [int(''.join([str(dig_map[int(ele)]) for ele in str(sub)])) for sub in test_list]
# printing result
print("List after Digit Substitution : " + str(res))
输出 :
The original list is : [45, 32, 87, 34, 21, 91]
List after Digit Substitution : [27, 86, 95, 82, 64, 34]