📜  Python – 使用字典替换数字

📅  最后修改于: 2022-05-13 01:54:22.788000             🧑  作者: Mango

Python – 使用字典替换数字

有时,在使用Python Dictionary 时,我们可能会遇到需要替换 List 中每个元素的数字的问题。这可能会导致数字的变化。这种问题可能发生在数据预处理领域。让我们讨论可以执行此任务的某些方式。

方法#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]