gpt4 book ai didi

python - 使用 Python 将列表转换为字典的函数,反之亦然

转载 作者:行者123 更新时间:2023-12-01 05:31:51 25 4
gpt4 key购买 nike

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

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()]

dct1 = {v[0]: v[1:] for v in lst1}

或者,作为一个函数:

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}
...
>>> 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]}

关于python - 使用 Python 将列表转换为字典的函数,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20037342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com