2024-05-14 02:05:14 发布
网友
嗨,我正在构建一个字典,其中每个键都是一个客户名称,每个值都是每个客户购买的元组列表,比如:(产品,数量)。例如:
{'customer1': (('milk', 3), ('bread', 5), ('eggs', 2)), 'customer2': (('cheese', 2), ('cereal', 7))}
我正在根据SQL查询的结果填充字典。作为一个对Python还不熟悉的Java程序员,有人能推荐一下“pythonic”的方法吗?查询的每一行都包含客户名称、产品、数量。
你的内部结构应该是一个列表,而不是一个元组,因为结构是同质的。
{'customer1': [('milk', 3), ('bread', 5), ('eggs', 2)], 'customer2': [('cheese', 2), ('cereal', 7)]}
这还允许您对它们使用.append(),并且可以使用collections.defaultdict以空列表开始每个值,以便进一步简化。
.append()
collections.defaultdict
我希望你有一个列表从你的数据库,所以例如
rows = [('customer1', ('milk', 2)), ('customer12', ('bread', 4))] # etc etc
然后你就可以做了。
for row in rows: cust_dict[row[0]] = row[1:]
首先,我使用列表而不是元组作为字典条目。主要的区别在于列表是可变的,而元组不是可变的。
我认为^{}是解决这个问题的好方法:
from collections import defaultdict customers = defaultdict(list)
您可以像这样添加条目(当然,在您的情况下,您将在循环中这样做):
customers['customer1'].append(('milk', 3)) customers['customer1'].append(('bread', 5)) customers['customer2'].append(('cereal', 7))
结果是:
>>> print dict(customers) {'customer1': [('milk', 3), ('bread', 5)], 'customer2': [('cereal', 7)]}
你的内部结构应该是一个列表,而不是一个元组,因为结构是同质的。
这还允许您对它们使用
.append()
,并且可以使用collections.defaultdict
以空列表开始每个值,以便进一步简化。我希望你有一个列表从你的数据库,所以例如
然后你就可以做了。
首先,我使用列表而不是元组作为字典条目。主要的区别在于列表是可变的,而元组不是可变的。
我认为^{} 是解决这个问题的好方法:
您可以像这样添加条目(当然,在您的情况下,您将在循环中这样做):
结果是:
相关问题 更多 >
编程相关推荐