python数据构造,具有单个项目的多个值

时间:2017-04-09 17:11:24

标签: python list set

我不确定实现这一目标的最佳方式。

for line in lines:
    value1 = a
    value2 = b
    value3 = c

有多个字符串等于value2和value3。所以我最初的想法是创建一个字典,但键的初始值是用每个新值写的。

如何获得如下所示的数据结构:

{value1, value2 = [a,b,c], value3 = [d,e,f]}

我可以在集合中创建一个列表吗?

1 个答案:

答案 0 :(得分:0)

您可以使用defaultdict来实现此目的。然后,您可以轻松地根据键创建列表,并将与该键关联的多个值存储在列表中(以避免出现覆盖问题)。

在基础级别,当您定义my_dict = defaultdict(list)时,您所说的是"当我为此词典创建新密钥时,会自动为该密钥分配一个空列表作为默认值。"然后,您可以立即将值附加到针对该键存储的空列表中。如果密钥已存在,则其行为与常规字典的行为相同。

import random
from collections import defaultdict

choice_of_numbers = range(20) # We will pick randomly from the list and assign to dict keys

my_dict = defaultdict(list) # Create a defaultdict

for x in range(5): # To emulate your for line in lines loop
    my_dict['value1'].append(random.choice(choice_of_numbers))  
    my_dict['value2'].append(random.choice(choice_of_numbers))
    my_dict['value3'].append(random.choice(choice_of_numbers))

print(dict(my_dict)) # We call dict here just to make the appearance more familiar