我正在遍历查找每行中某些属性的文件,如果该行匹配,我想将其作为项目插入特定字典键的列表中。
例如:
list_of_names = ['aaron', 'boo', 'charlie']
for name in list_of_names
if color contains 'a':
#add here: add to list in dict['has_a']
print dict['has_a']
应该打印['aaron','charlie']。
我问这个的原因是因为我不确定如何为字典中的密钥创建多个条目。
答案 0 :(得分:4)
您可以使用python' s defaultdict
来实现此目的。它会自动生成一个列表作为字典的默认值。
from collections import defaultdict
mydict = defaultdict(list)
list_of_names = ['aaron', 'boo', 'charlie']
for name in list_of_names:
if 'a' in name:
mydict['has_a'].append(name)
print mydict['has_a']
输出:
['aaron', 'charlie']
defaultdict
可能不合适,相反,他应该只是特例两种情况。
# Initialize our dictionary with list values for the two special cases.
mydict = {'has_a' : [], 'has_b' : []}
list_of_names = ['aaron', 'boo', 'charlie']
for name in list_of_names:
if 'a' in name:
mydict['has_a'].append(name)
# When not in a special case, just use the dictionary like normal to assign values.
print mydict['has_a']
答案 1 :(得分:2)
我认为这是setdefault
对象的dict
方法的一个很好的用例:
d = dict()
for name in list_of_names:
if 'a' in name:
d.setdefault("has_a", []).append(name)
答案 2 :(得分:0)
您可以使用key
功能获取密钥列表,并检查是否需要添加。然后一如既往地追加。
list_of_names = ['aaron', 'boo', 'charlie']
has_dictionary = {}
for name in list_of_names:
if name.find('a') != -1:
if 'has_a' not in has_dictionary.keys():
has_dictionary['has_a'] = []
has_dictionary['has_a'].append(name)
print(has_dictionary['has_a'])