※ 引述《hohiyan (海洋)》之铭言:
: 大家好
: 我目前正在自学python,想请教是否有更好的方法来处理搜寻nested list中的资料。
: 例如一个 nested list 为 ft = [['a',10],['b',5],['c',11'],['d',3]]
: 题目为
: Function add() takes a single-character string and a ft, and modified the ft
: to increase the number of occurrences of that character by 1.
: 例如 add('a',ft) 会 return ft = [['a',11],['b',5],['c',11'],['d',3]]
: 而 add('i',ft) return ft = [['a',10],['b',5],['c',11'],['d',3],['i',1]]
要很快找到文字的次数,不要用 list 而要用 dictionary 就可以了。
list 是比较原始,方便循序搜寻的资料格式,而 dictionary 则是用标签快速
寻找的格式。
ft = {'a':10, 'b':5, 'c':11, 'd':3}
def occur(x, ft):
return x in list(ft)
def add(x, ft):
if occur(x, ft):
ft.update({x: ft[x]+1})
else:
ft.update({x: 1})
return ft
我目前所理解的 dictionary ,大概是这样:假设 ft 是 dictionary ,
dictionary 是一堆 key 对应到一堆 value ,有点像函数。
用 list(ft) 可以取出 ft 的 keys , keys 中每个东西是独一的。
另外,用 ft.update({k1: v1, k2: v2}) 可以直接把 ft 中的 k1 和 k2
的对应值洗掉。
所以如果要让对应值一直往上加,要先从 ft 把旧的对应值很快抓出来,
然后,根据旧的对应值修改为新的对应值,再洗回去。
dictionary 抓对应值的速度是 O(1) ,洗回去的速度也是 O(1) 。