Python 如何从字典中减去字符串十六进制值?
组合列表值后形成两个字典(Python 如何从字典中减去字符串十六进制值?,python,Python,组合列表值后形成两个字典(d1和d2)。我必须减去这些值(d2-d1),然后打印字典 d1 = {'Rash': '80000000', 'Kil': '80000020', 'Varsha': '80000020', 'sam': '80010000'} d2 = {'Varsha': '8000ffe0', 'sam': '80014000', 'Kil': '8000ffe0', 'Rash': '801fffff'} d3 = {key: d2[key] - d1.get(ke
d1
和d2
)。我必须减去这些值(d2-d1
),然后打印字典
d1 = {'Rash': '80000000', 'Kil': '80000020', 'Varsha': '80000020', 'sam': '80010000'}
d2 = {'Varsha': '8000ffe0', 'sam': '80014000', 'Kil': '8000ffe0', 'Rash': '801fffff'}
d3 = {key: d2[key] - d1.get(key, 0) for key in d2}
print(d3)
这不起作用,因为它给出了类型错误:
TypeError:-:“str”和“str”的操作数类型不受支持
将这些字符串值转换为int(以16为基数),找出差异并将其转换回十六进制
>>> d3 = {key: f"{int(d2[key], 16) - int(d1.get(key, '0'), 16):x}" for key in d2}
>>> d3
{'Varsha': 'ffc0', 'sam': '4000', 'Kil': 'ffc0', 'Rash': '1fffff'}
这回答了你的问题吗?要转换回与OP相同的格式,不要使用
hex
,使用f“{int(d2[key],16)-int(d1.get(key,0),16):x}”
。另外,我认为默认值应该是'0'
而不是0
谢谢。。。更新了我的答案