我有一个我想要阅读的文件,它是这样的:
Warner, Bros, The Matrix, 5, 2.99
Sony, The Hobbit, 10, 3.99
Warner, Bros, Dark Knight, 4.99
我想从该文件创建一个字典,其中warner bros为关键字,其他所有字符串为值。我还需要将所有华纳兄弟加在一起制作一个键,不同的键值将是电影的名称和数量(矩阵为5)和价格。
我这样做的方式是我读取文件,然后将所有内容放入List中,然后使用该列表创建字典,但我意识到我将拥有同一品牌的多个键;例如华纳兄弟如何确保我只有一个具有多个价值的品牌?
谢谢!
答案 0 :(得分:3)
使用defaultdict
from collections import defaultdict
d = defaultdict(list)
for key,value in ([1,2],[3,4],[1,3],[4,2],[3,2]):
d[key].append(value)
print d
答案 1 :(得分:0)
尝试以下方法......
data = '''Warner, Bros, The Matrix, 5, 2.99
Sony, The Hobbit, 10, 3.99
Warner, Bros, Dark Knight, 1, 4.99''' # the 1 is missing from your example
# is it a typo? or the text data has this kind
# of errors that you should check?
# you can read your data with a csv.reader
# for this example I'll just split the lines
yourdata = dict() # or use the defaultdict approach
lines = data.split('\n')
for l in lines:
fields = l.split(',')
price = float(fields.pop(-1))
quantity = int(fields.pop(-1))
title = fields.pop(-1).strip()
value = {'title': title, 'quantity': quantity, 'price': price}
key = ' '.join(f.strip() for f in fields)
if key not in yourdata:
yourdata[key] = [value]
else:
yourdata[key].append(value)
print(yourdata)
或者为什么不使用2部分钥匙......
# ...
key = (' '.join(f.strip() for f in fields), title)
value = {'quantity': quantity, 'price': price}
yourdata[key] = value
# ...
答案 2 :(得分:0)
要打印结果,您可以使用类似的内容。我想你用你的数据作为电影公司名称的词典作为关键
for k in yourdata:
print k # format it as you need
for movie in yourdata[k]:
print ('\t'+movie['title'])
print ('\t'+str(movie['quantity']))
print ('\t'+str(movie['price']))
print
print