【发布时间】:2015-08-12 13:27:44
【问题描述】:
我需要一个建议,如何比较未知数量的嵌套字典以尽可能降低时间消耗。
下面是例子:
我有来自房屋租赁公司的数据。一所房子可以在更多的这些机构中。有一些关于这些房子的信息。
1.国家
2。日期
3.其他信息,例如房间数量等。
这些数据是这样存储的:
DictionaryOnFirstLevel: key = Country, value = DictionaryOnSecondLevel
DictionaryOnSecondLevel: key = Date, value = instance of class House including price, Country, Date etc.
所以,我想要的是找到相同的房子(同样的两间房子不是同一个对象)并比较它们的价格和另一个数据。
因为我知道一个国家和日期,所以我不必将每个房子与每个房子进行比较 - 我不必比较来自爱尔兰的物品和来自土耳其的物品,同样的问题是日期 - 我不需要必须比较具有不同日期的对象。
for date in first_agency.house_dict['Ireland']:
for h1 in first_agency.house_dict['Ireland'][date]:
if second_agency.house_dict['Ireland'].has_key(date): # to save some time
for h2 in second_agency.house_dict['Ireland'][date]:
if h1.equals(h2): # method equals do some approximative comparison of names of houses and other attributes
#do some calculations and stuff
以上代码仅适用于 2 个机构(第 1 和第 2)和国家“爱尔兰”。我只得到那些在 'Ireland' 键中的第一个机构中的日期,所以我不必与其他日期一起工作,因为它们没有机会值得。
那么你能帮我改进我的代码,以便我可以比较所有机构吗?
【问题讨论】:
-
你知道你的例子不是有效的python代码吗?
-
@muddyfish 你为什么这么认为?也许我写错了,但我找不到...
-
你有一个变量
1st。任何变量都不能以数字开头。 -
@muddyfish 对象比较当且仅当它们具有相同的国家和日期。
-
@muddyfish 好的,很抱歉,这只是一个示例,我现在会更正。
标签: python dictionary time-complexity nested-loops