使用多个值

时间:2016-03-01 14:49:28

标签: python dictionary key-value

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

我有什么:

myDict = {1: ['id1', 'id2', 'id3'], 2: ['id4', 'id5'], 3: ['id6']}

我想做什么:

myDict = {'id1': 1, 'id2': 1, 'id3': 1, 'id4': 2, 'id5': 2, 'id6': 3}

我一直在搜索论坛,无法弄清楚如何为单个键分配单个值,但我猜测'翻转'部分看起来像这样:

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

非常感谢任何帮助。

编辑: 所有id都是唯一的(不是重复/倍数的机会)

4 个答案:

答案 0 :(得分:3)

你需要嵌套2个理解,因为你有一个原始字典中每个键值对的值列表。

怎么样

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

答案 1 :(得分:1)

由于您不能在列表中包含重复的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 :(得分:1)

您可以通过以下方式实现此目的:

dict((x,k) for k, v in myDict.iteritems() for x in v)

OR:

{x: k for k, v in myDict.iteritems() for x in v}

OR(不是pythonic方法):

reverse_dict = {}
for k in a:
    for x in myDict[k]:
        reverse_dict[x] = k

答案 3 :(得分:0)

解决方案:

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