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)