我有下面的字典和钥匙列表。我想要做的是,如果这些键在字典中,并且它们的值中有任何数字(它们是字符串)。我想把这些数字转换成'#'字符。
迪特:
{"name":"Jone","age":"40 years","phone":"88777444"}钥匙:
["age","phone"]产出:
{"name":"Jone","age":"## years","phone":"########"}到目前为止,我已经掌握了这些数字,但不知道如何在字典中修改它们:
我的进步:
def convert(input, keys):
for k in range(len(keys)):
if keys[k] in input:
for el in input[keys[k]]:
if el.isdigit():
print(el)如您所见,我正在使用python。如果你使用不同的语言,一个正确的方向的提示将是很好的。
发布于 2022-06-28 17:13:34
这与已经给出的答案本质上是一样的,但采用了一种更容易适应的方法,例如,拥有一个字典列表:
import re
d = {"name":"Jone","age":"40 years","phone":"88777444"}
keys = ["age","phone"]
for k, v in d.items():
if k in keys:
d[k] = re.sub('\d', '#', v)
print(d)输出:
{'name': 'Jone', 'age': '## years', 'phone': '########'}发布于 2022-06-28 17:07:52
我推荐一个正则表达式。
import re
data = {"name":"Jone","age":"40 years","phone":"88777444"}
keys = ["age","phone"]
for key in keys:
if key in data:
# replace every key with a new string where every number
# ('[0-9]') is substituted by a '#'
data[key] = re.sub('[0-9]', '#', data[key])
# {'name': 'Jone', 'age': '## years', 'phone': '########'}
print(data)发布于 2022-06-28 17:21:34
下面是使用字典理解的一行解决方案。
d = {k: re.sub("\d", "#", d[k]) if k in keys else v for k, v in d.items()}https://stackoverflow.com/questions/72790540
复制相似问题