【问题标题】:How to subtract string hexadecimal values from dictionaries? [duplicate]如何从字典中减去字符串十六进制值? [复制]
【发布时间】:2020-08-18 09:35:03
【问题描述】:

组合列表值后形成两个字典(d1d2)。我必须减去这些值 (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'

【问题讨论】:

标签: python


【解决方案1】:

将这些字符串值转换为 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
猜你喜欢
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 2017-06-16
  • 2017-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多