将字典值转换为值列表python

时间:2013-07-23 17:32:34

标签: python list dictionary

我是Python新手,想知道如何将以下key->值对字典转换为key-> [value],即我的值是一个列表,以便我可以向列表中添加更多元素。 我的字典如下:

{'Mississippi': '28', 'Oklahoma': '40', 'Delaware': '10', 'Minnesota': '27', 'Illinois': '17', 'Arkansas': '05', 'New Mexico': '35', 'Indiana': '18', 'Maryland': '24'}

如何转换为:

{'Mississippi': ['28'], 'Oklahoma': ['40'], 'Delaware': ['10'], 'Minnesota': ['27'], 'Illinois': ['17'], 'Arkansas': ['05'], 'New Mexico': ['35'], 'Indiana': ['18'], 'Maryland': ['24']}

所以我试着这样做:

dict_cntrycodes= {k: [v] for k,[v] in cntry_codes} 

但是我开始犯错误:解压缩的值太多了。

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

>>> testDict = {'Mississippi': '28', 'Oklahoma': '40', 'Delaware': '10', 'Minnesota': '27', 'Illinois': '17', 'Arkansas': '05', 'New Mexico': '35', 'Indiana': '18', 'Maryland': '24'}

>>> {k: [v] for k, v in testDict.items()}
{'Mississippi': ['28'], 'Oklahoma': ['40'], 'Delaware': ['10'], 'Minnesota': ['27'], 'Illinois': ['17'], 'Arkansas': ['05'], 'New Mexico': ['35'], 'Indiana': ['18'], 'Maryland': ['24']}

由于第一个字典中的键是字符串而不是列表,因此获取太多值来解压错误。以下作品。

>>> elem = "abc"
>>> [elem] = ['abc']

但是,这会产生错误。

>>> [elem] = "abc"

Traceback (most recent call last):
  File "<pyshell#64>", line 1, in <module>
    [elem] = "abc"
ValueError: too many values to unpack

这是因为您尝试将三个元素('a', 'b', 'c')解包为一个元素elem

如果你这样做,问题就会消失

>>> [a, b, c] = "abc"
>>> print a, b, c
a b c

答案 1 :(得分:1)

如果您想编辑原始字典,请执行此操作。

d = {'Mississippi': '28', 'Oklahoma': '40', 'Delaware': '10', 'Minnesota': '27', 'Illinois': '17', 'Arkansas': '05', 'New Mexico': '35', 'Indiana': '18', 'Maryland': '24'}
for i in d: d[i] = [d[i]]