【发布时间】:2014-09-23 01:40:42
【问题描述】:
不使用 defaultdict 最简单的方法是什么?如果使用核心 python 功能执行此操作太麻烦,那么 defaultdict 就可以了。
我有一个键列表作为列表。
我有一个短循环来创建一些带有值的列表,我想将其中的值映射到字典中的键。
所以,最后我会得到每个键的多个值。然后打印。
这就是我目前所拥有的......
Keys = ['A','B','C'] #the keys that will be mapped to all values start here in a list
Values = [] #starting with empty values
Dict = dict(zip(Keys, Values)) #starting with a dict of keys mapped to empty values
x=0
while x < 5:
x += 1
MoreValues = [1+x,2+x,3] #adding x only to give some different values
Dict = dict(zip(Keys, MoreValues))
print Dict
这段代码的输出是:
{'A': 2, 'C': 3, 'B': 3}
{'A': 3, 'C': 3, 'B': 4}
{'A': 4, 'C': 3, 'B': 5}
{'A': 5, 'C': 3, 'B': 6}
{'A': 6, 'C': 3, 'B': 7}
看待这个问题的另一种方式是,如何将这些结果字典合并在一起,以便将 A、B、C 的键映射到这些多个值,假设这个设置带有一个 for 循环来生成值列表。
输出应该是:
{'A': [2, 3, 4, 5, 6], 'C': [3, 3, 3, 3, 3], 'B': [3, 4, 5, 6, 7]}
【问题讨论】:
-
你为什么不想使用默认字典?
-
我想看看如何通过核心python功能做到这一点,但是如果太麻烦那么defaultdict就可以了。
-
在那个例子中,有多个字典具有相同的键。在这个例子中,它是多个值列表映射到一个带有键的字典。
-
在循环结束时你想要什么输出?我很难理解你在这里真正想要的是什么。 . .
标签: python list dictionary