函数使用Python将列表转换为字典,反之亦然
我正在尝试编写一个函数,将字典转换为列表(字典键作为列表中的第一个值),并将列表转换回字典。 例如,给定函数使用Python将列表转换为字典,反之亦然,python,dictionary,Python,Dictionary,我正在尝试编写一个函数,将字典转换为列表(字典键作为列表中的第一个值),并将列表转换回字典。 例如,给定 dict1 = {'a':[1,2], 'b':[3], 'c':[4,5]}, 函数应返回一个答案: [['a', 1, 2], ['c', 4, 5], ['b', 3]]. 或者,如果输入是 lst1 = [['a', 1, 2], ['c', 4, 5], ['b', 3]], 然后函数应返回: {'a':[1,2], 'b':[3], 'c':[4,5]} 我已经编写了
dict1 = {'a':[1,2], 'b':[3], 'c':[4,5]},
函数应返回一个答案:
[['a', 1, 2], ['c', 4, 5], ['b', 3]].
或者,如果输入是
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)
列出理解和听写理解为您完成以下工作:
lst1 = [[k] + v for k, v in dct1.iteritems()]
及
或者,作为一种功能:
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}
如果您使用的是Python 3,请使用.items()
而不是.iteritems()
演示:
太好了,这正是我需要的。非常感谢。
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}
>>> 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]}