如何在Python中以对象为键一行代码初始化字典?
如何用一行代码创建以对象实例为键的字典?
嘿,这个问题我之前也踩过坑!你遇到的情况其实是Python字典构造函数的一个小特性:当你用dict(training_flower=dist)这种关键字参数的形式时,Python会把training_flower当成字符串字面量来处理,而不是把它当作变量指向的IrisFlower实例。这就是为什么键变成了字符串'training_flower',而不是你想要的对象。
要实现用对象实例作为键创建字典,有两种简洁的一行代码方式:
1. 直接使用字典字面量(最推荐)
这是最直观也最简洁的写法,直接用大括号包裹键值对,这里的键会被解析为变量指向的对象:
d = {training_flower: dist}
2. 传入键值对元组列表给dict()
如果需要一次性添加多个对象键值对,可以把每个键值对包装成元组,再放到列表里传给dict():
# 假设还有另一个IrisFlower实例 another_flower = IrisFlower(4.9, 3.0) another_dist = 0.3 d = dict([(training_flower, dist), (another_flower, another_dist)])
验证一下效果
你可以打印字典的键来确认:
print(list(d.keys()))
输出会是类似[<__main__.IrisFlower object at 0x10abc1234>, ...]的对象实例,而不是字符串键,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Koray Tugay
相关产品推荐
相关产品推荐

