函数使用Python将列表转换为Dictionary和viceversa

2024-09-30 22:24:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写一个函数,将字典转换为列表(字典键作为列表中的第一个值),并将列表转换回字典。 例如,给定

dict1 = {'a':[1,2], 'b':[3], 'c':[4,5]}, 

函数应返回一个答案:

^{pr2}$

或者,如果输入是

lst1 = [['a', 1, 2], ['c', 4, 5], ['b', 3]], 

然后函数应该返回:

{'a':[1,2], 'b':[3], 'c':[4,5]}

我写了以下代码。除了一个问题,它正在做它应该做的事情。如果输入是字典,则返回

[['a', [1, 2]], ['c', [4, 5]], ['b', [3]]] (a nested list) instead of
[['a', 1, 2], ['c', 4, 5], ['b', 3]].

我的功能代码:

def convertDL(value1):
   if type(value1) == dict:
       scoreList = []
       for key, value in value1.items():
           temp = [key, value]
           scoreList.append(temp)
       return scoreList
   if type(value1) == list:
       scoreDict = {}
       i = 0
       for item in value1:
           scoreDict[value1[i][0]] = value1[i][1:]
           i = i +1
       return scoreDict
convertDL(lst1)

Tags: key函数代码列表forif字典value
1条回答
网友
1楼 · 发布于 2024-09-30 22:24:58

列表理解和听写理解为您做这项工作:

lst1 = [[k] + v for k, v in dct1.iteritems()]

以及

^{pr2}$

或者,作为函数:

def convertDL(val):
    if isinstance(val, dict):
        return [[k] + v for k, v in val.iteritems()]
    return {v[0]: v[1:] for v in val}

如果使用的是python3,请使用.items(),而不是{}。在

演示:

>>> def convertDL(val):
...     if isinstance(val, dict):
...         return [[k] + v for k, v in val.iteritems()]
...     return {v[0]: v[1:] for v in val}
... 
>>> convertDL({'a':[1,2], 'b':[3], 'c':[4,5]})
[['a', 1, 2], ['c', 4, 5], ['b', 3]]
>>> convertDL([['a', 1, 2], ['c', 4, 5], ['b', 3]])
{'a': [1, 2], 'c': [4, 5], 'b': [3]}

相关问题 更多 >