我有一个像
这样的单词列表["abc","hello","i"]
我希望将它们存储在字典中,其中键是单词的长度。
我只是初步化字典。
答案 0 :(得分:1)
在defaultdict
之前的过去,我们用来写l
是单词列表的位置:
d = {}
for w in l:
if len(w) in d:
d[len(w)].append(w)
else:
d[len(w)] = [w]
这导致d
成为{1: ['i'], 3: ['abc'], 5: ['hello']}
。
使用defaultdict
:
from collections import defaultdict
d = defaultdict(list)
for w in l:
d[len(w)].append(w)
这导致d
成为defaultdict(<type 'list'>, {1: ['i'], 3: ['abc'], 5: ['hello']})
。并且可以通过dict
轻松转换为dict(d)
,从而生成{1: ['i'], 3: ['abc'], 5: ['hello']}
。
答案 1 :(得分:1)
使用itertools.groupby函数和dict表达式来构建结果。 pythonic方式
>>> from itertools import groupby
>>> data=["abc","a", "bca", "hello","i"] #more than one result by word-length
>>> keyfunc = lambda x:len(x)
>>> data = sorted(data, key=keyfunc)
>>> {k:list(g) for k, g in groupby(data,keyfunc)}
{1: ['a', 'i'], 3: ['abc', 'bca'], 5: ['hello']}
答案 2 :(得分:0)
你必须
array = ["abc","hello","i"]
dict = {}
for i in array:
dict[len(i)] = i
主要问题是,在字典中每个键只能放一个值,所以如果你有多个长度相同的单词,那么只保存你输入的最后一个世界。
答案 3 :(得分:0)
words = {}
words[3] = "abc"
words[5] = "hello"
words[1] = "i"
答案 4 :(得分:0)
同样,可以使用以下代码完成:
d = {}
l = ["abc","hello","i"]
for item in l:
d.setdefault(len(item), []).append(item)
答案 5 :(得分:0)
您可以尝试以下代码:
dict = {}
elements = ["varun","rahul","rishabh"]
for item in elements:
dict.setdefault(len(item), []).append(item)
答案 6 :(得分:0)
使用理解:
mydict = {len(i): i for i in list_of_words}
编辑:对于更新的OP需求,这没有用 - 它只记录每个单词长度键一个单词。我无法弄清楚如何做相当于perl的
push @list, value
自动化。