from collections import defaultdict
a = defaultdict(list)
a['Fruits'].append('Mango')
a['Fruits'].append('Durian')
a['Price'].append(10)
>>> a
defaultdict(<class 'list'>, {'Fruits': ['Mango', 'Durian'], 'Price': [10]})
我想使列表中的项成为键并添加值。例如:
{'Fruits': ['Mango' : ['Thailand', 'China'], 'Durian' : ['Malaysia','Singapore']], 'Price': [10]}
有人能帮忙吗?你知道吗
所需的输出不是一个有效的Python格式的输出,无论如何都可以理解您要查找的内容。
构建此数据结构的多种方法(最类似于您的方法)之一是:
这是你想要的(无效的)输出和实际输出的对峙:
请注意,虽然它不是最具python风格的解决方案,也不是真正干净的代码,但我认为您出于特定的原因(更大的代码,遵循一个课程…?)正在初始化一个带有列表的defaultdict你知道吗
假设我们有一家卖水果的商店,你想知道每种水果可能的产地和价格。你知道吗
我们可以开始为每种水果建立一个小字典:
如您所见,我们现在可以访问每个水果的不同信息。现在我们要把它们放在一本字典里:
现在您可以访问整个水果目录或其中的特定信息。你知道吗
所以当
defaultdict
开始发挥作用时?假设您尝试访问一些关于木瓜的信息,一种您尚未插入的水果:
它引发了一个错误:
它引发了一个错误:
Papaya
不是我们的store
dict的键。但是您不希望引发错误;如果在我们的dict中不存在key
,则最好返回一个默认值。那就是
defaultdict
发挥作用的时候。如documentation中所述,[它]为给定的键提供了一个默认值。你知道吗所以我们需要一个通用的
fruit
字典,如果键不存在,它将返回Value not inserted yet
:如果键不存在,
store
字典必须返回my_fruit
字典的副本:导致以下代码:
如您所见,字典的工作方式与之前完全相同,但是当我们在
store
dict中插入一个无效的key
时,我们会收到一个my_fruit
dict的副本,当我们为my_fruit
dict插入一个无效的key
时,我们会打印出Value not inserted yet
。你知道吗注意:您可以看到Lambdas和copy.deepcopy的用法。这些可能是一些高级概念,您可能需要进行一些研究/提出新问题
相关问题 更多 >
编程相关推荐