[英]python create dict using list of strings with length of strings as values
我確信這可以做到,但到目前為止我還沒有成功:
我有一個字符串列表。 我想創建一個字典,以所述字符串的長度(可以表示為一個范圍)作為鍵,字符串本身作為值。
示例:這是我擁有的列表:['foo','bar','help','this','guy']
我想最終得到這樣的字典:{3:['foo','bar','guy], 4:['this','help']}
使用defaultdict
這樣您就不必檢查是否為新鍵創建列表:
from collections import defaultdict
x = ['foo','bar','help','this','guy']
len_dict = defaultdict(list)
for word in x:
len_dict[len(word)].append(word)
len_dict
#
# Out[5]: defaultdict(list, {3: ['foo', 'bar', 'guy'], 4: ['help', 'this']})
您可以使用字典作為帶有setdefault
的容器:
lst = ['foo','bar','help','this','guy']
result = {}
for w in lst:
result.setdefault(len(w), []).append(w)
result
# {3: ['foo', 'bar', 'guy'], 4: ['help', 'this']}
你可以這樣做:
d={}
lst=['foo','bar','help','this','guy']
for i in lst:
if len(i) in d:
d[len(i)].append(i)
else:
d[len(i)]=[i]
這個解決方案是 Pythonic、優雅和快速的:(由著名的Raymond Hettinger在他的眾多會議之一中提出)。
dict.setdefault
是字典方法,如果在 dict 中找不到鍵,則初始化鍵值,並為提供的鍵執行dict.get
。
l = ['foo','bar','help','this','guy']
d = {}
for e in l:
key = len(e)
d.setdefault(key, []).append(name)
print(d)
輸出:
{3: ['foo', 'bar', 'guy'], 4: ['help', 'this']}
此解決方案是上述解決方案的現代方式:
collection
中的defaultdict
是dict
的子類,它自動將 value 初始化為不在defaultdict
中的任何給定鍵。
from collections import defaultdict
l = ['foo','bar','help','this','guy']
d = defaultdict(list)
for e in l:
key = len(e)
d[key].append(e)
print(d)
輸出:
defaultdict(<class 'list'>, {3: ['foo', 'bar', 'guy'], 4: ['help', 'this']})
類似於已經說過的,但使用dict
類的get
方法:
the_list=['foo','bar','help','this','guy']
d = {}
for word in the_list:
key = len(word)
d[key] = d.get(key, []) + [word]
print(d)
# {3: ['foo', 'bar', 'guy'], 4: ['help', 'this']}
另一種方法:
from collections import defaultdict
given_list=['foo','bar','help','this','guy']
len_words=[len(i) for i in given_list]
d=defaultdict(list)
for i,j in list(zip(len_words,given_list)):
d[i].append(j)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.