Python 2.7 如何在Py2.7中将列表中的所有值转换为字典的键
我有下面的清单Python 2.7 如何在Py2.7中将列表中的所有值转换为字典的键,python-2.7,Python 2.7,我有下面的清单 lists=[ ['arya','egg','milk','butter','bread'], ['Jon','butter','pastrie','yogurt','beer'], ['bran','beer','milk','banana','apples'],] 每个列表都有一些值,其中第一个值是人名,其余的是一些食物。我有一项任务,我必须创建一个字典,将这些食物项作为关键字,将人作为值,如下所示 dict = { 'egg' :
lists=[ ['arya','egg','milk','butter','bread'],
['Jon','butter','pastrie','yogurt','beer'],
['bran','beer','milk','banana','apples'],]
每个列表都有一些值,其中第一个值是人名,其余的是一些食物。我有一项任务,我必须创建一个字典,将这些食物项作为关键字,将人作为值,如下所示
dict = { 'egg' : set(['arya']),
'milk': set(['arya','bran']),
'butter' : set(['arya','jon']),
'bread' : set(['arya']),
'pastrie' : set(['jon']),
'milk' : set(['bran'])
} # few keys omitted
我就是这么做的,停了下来,不知道怎么继续
food,person = [],[]
for i in lists:
food.append(i[1:])
person.append(i[0])
我能够分离每个列表的第一个值并将其附加到一个列表中
食物也是一样。
我不知道如何继续下去。
开始学习python,任何输入都非常有用。请分享一两行解释来启发这个新手
非常感谢。使用字典方法在这里很有帮助
当然,您不需要将切片设置为变量,但这样更易于读取
d = {}
for l in lists:
name = l[0]
items = l[1:]
for item in items:
d.setdefault(item, set()).add(name)
使用
集合。defaultdict
:
lists = [['arya', 'egg', 'milk', 'butter', 'bread'],
['Jon', 'butter', 'pastrie', 'yogurt', 'beer'],
['bran', 'beer', 'milk', 'banana', 'apples']]
from collections import defaultdict
d = defaultdict(set)
for sub in lists:
for v in sub[1:]:
d[v].add(sub[0])
print(d)
输出:
defaultdict(<class 'set'>,
{'bread': {'arya'}, 'yogurt': {'Jon'}, 'beer': {'Jon', 'bran'},
'banana': {'bran'}, 'butter': {'Jon', 'arya'}, 'milk': {'arya',
'bran'}, 'pastrie': {'Jon'}, 'egg': {'arya'}, 'apples': {'bran'}})
from collections import defaultdict
d = defaultdict(set)
for name, *rest in lists:
for v in rest:
d[v].add(name)