如何在Python中为特定键创建列表作为字典条目?

时间:2014-07-01 21:00:42

标签: python dictionary

我正在遍历查找每行中某些属性的文件,如果该行匹配,我想将其作为项目插入特定字典键的列表中。

例如:

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']。

我问这个的原因是因为我不确定如何为字典中的密钥创建多个条目。

3 个答案:

答案 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']

OP在评论中表示他希望在他的字典中使用异质值。在这种情况下,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'])