supportData = {('ELF'): 0.75, ('CAT'): 0.75, ('BAT', 'CAT', 'ELF'): 0.5, ('ARK', 'BAT'): 0.25, ('ARK', 'ELF'): 0.25, ('CAT', 'ELF'): 0.5, ('DOG'): 0.25, ('BAT', 'CAT'): 0.5, ('BAT', 'ELF'): 0.75, ('ARK'): 0.5, ('ARK', 'CAT'): 0.5, ('BAT'): 0.75}
L = [('ARK'), ('CAT'), ('CAT'), ('ELF'),('ARK', 'CAT'), ('BAT', 'ELF'), ('BAT', 'CAT'), ('CAT', 'ELF'),('BAT', 'CAT', 'ELF')]
for freqSet in L:
H = list(freqSet)
if len(H) == 1:
pass
else:
for conseq in H:
freqsetlist = list(freqSet)
freqsetlist.remove(conseq)
if len(freqsetlist) == 1:
conf = supportData[freqSet]/supportData[tuple(freqsetlist)[0]]
if conf >= 0.1:
print freqsetlist,'-->',conseq,'conf:',conf
else:
conf = supportData[freqSet]/supportData[tuple(freqsetlist)[:]]
if conf >= 0.1:
print freqsetlist,'-->',conseq,'conf:',conf
Output
KeyError: ('R','K')
有人可以指出我收到此错误的原因吗?当len(freqsetlist)是>时,似乎发生错误。那是用3元素计算元组时的
答案 0 :(得分:4)
这是对象的表示,如果你想要一个不同的表示,你将不得不自己构建它:
>>> k = ['van']
>>> "({})".format(", ".join(k))
'(van)'
请注意,这意味着您使用Python的对象表示作为程序的一部分,这是一个坏主意,您应该始终手动构建您需要的内容,而不是尝试使用Python的表示,这是用于调试
编辑:逗号是Python显示元组的方式,因为括号默认表示操作的分组而不是元组。如果你真的想要的话,你可以创建自己的元组子类并更改__repr__()
/ __str__()
,但这将是非常无意义的(在__repr__()
的情况下是unpythonic,因为它应该评估为对象)。
答案 1 :(得分:0)
supportData = {('nas','fat'): 0.5, ('nas'): 1.0, ('fat'):0.6, ('van'):0.72, ('jos'):0.55,('van','jos'):0.10}
itemSets = [('nas','fat'),('van','jos')]
for freqSet in itemSets: H = [''.join(list(item)) for item in freqSet]
for conseq in H:
freqsetlist = list(freqSet)
freqsetlist.remove(conseq)
conf = supportData[freqSet]/supportData[tuple(freqsetlist)[0]]