繁体   English   中英

将具有多个值的字典键的单个值分配给单个键

[英]Assign single value to a single key from dictionary key with multiple values

我见过很多关于在python中为键分配多个值的论坛,但是没有其他的论坛。 我想要的是将单个键分配给单个值,然后翻转它。

我有的:

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将是唯一的(不是重复/多次的机会)

您需要嵌套2个理解,因为您在原始dict中具有每个键值对的值列表。

怎么样

{id:x for x,y in myDict.iteritems() for id in y}

由于列表中不能有重复的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}

您可以通过以下方式实现:

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}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM