pythondict初始化_如何在Python中初始化字典,其中Key是一个对象?

到目前为止,这就是我所拥有的:import csv

import math

import random

training_set_ratio = 0.67

training_set = []

test_set = []

class IrisFlower:

def __init__(self, petal_length, petal_width, sepal_length, sepal_width, flower_type):

self.petal_length = petal_length

self.petal_width = petal_width

self.sepal_length = sepal_length

self.sepal_width = sepal_width

self.flower_type = flower_type

def __hash__(self) -> int:

return hash((self.petal_length, self.petal_width, self.sepal_length, self.sepal_width))

def __eq__(self, other):

return (self.petal_length, self.petal_width, self.sepal_length, self.sepal_width) \

== (other.petal_length, other.petal_width, other.sepal_length, other.sepal_width)

def load_data():

with open('dataset.csv') as csvfile:

rows = csv.reader(csvfile, delimiter=',')

for row in rows:

iris_flower = IrisFlower(float(row[0]), float(row[1]), float(row[2]), float(row[3]), row[4])

if random.random() < training_set_ratio:

training_set.append(iris_flower)

else:

test_set.append(iris_flower)

def euclidean_distance(flower_one: IrisFlower, flower_two: IrisFlower):

distance = 0.0

distance = distance + math.pow(flower_one.petal_length - flower_two.petal_length, 2)

distance = distance + math.pow(flower_one.petal_width - flower_two.petal_width, 2)

distance = distance + math.pow(flower_one.sepal_length - flower_two.sepal_length, 2)

distance = distance + math.pow(flower_one.sepal_width - flower_two.sepal_width, 2)

return distance

def get_neighbors(test_flower: IrisFlower):

distances = []

for training_flower in training_set:

dist = euclidean_distance(test_flower, training_flower)

d = dict()

d[training_flower] = dist

print(d)

return

load_data()

get_neighbors(test_set[0])

当前,在以下代码块中打印语句:def get_neighbors(test_flower: IrisFlower):

distances = []

for training_flower in training_set:

dist = euclidean_distance(test_flower, training_flower)

d = dict()

d[training_flower] = dist

print(d)

return

将有类似于{<__main__.IrisFlower object at 0x107774fd0>: 0.25999999999999945}

没关系的。但我不想先创建字典,然后追加键值,如下所示:d = dict()

d[training_flower] = dist

所以这就是我要尝试的:d = dict(training_flower = dist)

但是,它似乎不像是dist方法是使用实例,而是使用字符串,因为我看到打印的内容如下:{'training_flower': 23.409999999999997}

{'training_flower': 16.689999999999998}

如何在一条语句中使用对象作为键创建字典?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值