将单个值分配给具有多个值的字典键中的单个键
Assign single value to a single key from dictionary key with multiple values
我看到很多论坛都在为 python 中的一个键分配多个值,但 none 却恰恰相反。我想要的是将单个键分配给单个值,然后翻转它。
我有:
myDict = {1: ['id1', 'id2', 'id3'], 2: ['id4', 'id5'], 3: ['id6']}
我想做什么:
myDict = {'id1': 1, 'id2': 1, 'id3': 1, 'id4': 2, 'id5': 2, 'id6': 3}
我一直在搜索论坛,但无法弄清楚如何将单个值分配给单个键,但我猜 'flip' 部分看起来像这样:
myDict = {y:x for x,y in MyDict.iteritems()}
如有任何帮助,我们将不胜感激。
编辑:
所有 id 都是唯一的(不是 duplicates/multiples 的机会)
由于列表中不能有重复的 id,一个相对简单的理解就可以做到:
>>> myDict = {1: ['id1', 'id2', 'id3'], 2: ['id4', 'id5'], 3: ['id6']}
>>> {id:k for k,lst in myDict.iteritems() for id in lst}
{'id6': 3, 'id4': 2, 'id5': 2, 'id2': 1, 'id3': 1, 'id1': 1}
您需要嵌套 2 个推导式,因为原始字典中的每个键值对都有一个值列表。
怎么样
{id:x for x,y in myDict.iteritems() for id in y}
您可以通过以下方式实现:
dict((x,k) for k, v in myDict.iteritems() for x in v)
或:
{x: k for k, v in myDict.iteritems() for x in v}
或(不是 pythonic 方法):
reverse_dict = {}
for k in a:
for x in myDict[k]:
reverse_dict[x] = k
解决方案:
{id:x for x,y in myDict.iteritems() for id in y}
我看到很多论坛都在为 python 中的一个键分配多个值,但 none 却恰恰相反。我想要的是将单个键分配给单个值,然后翻转它。
我有:
myDict = {1: ['id1', 'id2', 'id3'], 2: ['id4', 'id5'], 3: ['id6']}
我想做什么:
myDict = {'id1': 1, 'id2': 1, 'id3': 1, 'id4': 2, 'id5': 2, 'id6': 3}
我一直在搜索论坛,但无法弄清楚如何将单个值分配给单个键,但我猜 'flip' 部分看起来像这样:
myDict = {y:x for x,y in MyDict.iteritems()}
如有任何帮助,我们将不胜感激。
编辑: 所有 id 都是唯一的(不是 duplicates/multiples 的机会)
由于列表中不能有重复的 id,一个相对简单的理解就可以做到:
>>> myDict = {1: ['id1', 'id2', 'id3'], 2: ['id4', 'id5'], 3: ['id6']}
>>> {id:k for k,lst in myDict.iteritems() for id in lst}
{'id6': 3, 'id4': 2, 'id5': 2, 'id2': 1, 'id3': 1, 'id1': 1}
您需要嵌套 2 个推导式,因为原始字典中的每个键值对都有一个值列表。
怎么样
{id:x for x,y in myDict.iteritems() for id in y}
您可以通过以下方式实现:
dict((x,k) for k, v in myDict.iteritems() for x in v)
或:
{x: k for k, v in myDict.iteritems() for x in v}
或(不是 pythonic 方法):
reverse_dict = {}
for k in a:
for x in myDict[k]:
reverse_dict[x] = k
解决方案:
{id:x for x,y in myDict.iteritems() for id in y}