Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从字典中减去字符串十六进制值?_Python - Fatal编程技术网

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
谢谢。。。更新了我的答案