在Dictionary中为现有条目添加值

时间:2013-07-11 05:13:28

标签: python

我开始使用像这样的列表

lists = [['test', '1', '-1', '0', '-1'],['test2', '0', '1', '0', '-1']

我最终想要的是{'test': [1, -1, 0, -1], 'test2': [0, 1, 0, -1]}

基本上,我需要从列表中创建一个字典。字典的值必须是整数而不是字符串。

这是我的非工作代码:

endResult = dict()
for x in lists:
    for y in x:
        endResult.update({x[0]:int(y)})

3 个答案:

答案 0 :(得分:1)

endResult = {}
for x in lists:
    endResult[x[0]] = [int(y) for y in x[1:]]

示例:

>>> lists = [['test', '1', '-1', '0', '-1'],['test2', '0', '1', '0', '-1']]
>>> endResult = {}
>>> for x in lists:
...     endResult[x[0]] = [int(y) for y in x[1:]]
...
>>> endResult
{'test2': [0, 1, 0, -1], 'test': [1, -1, 0, -1]}

答案 1 :(得分:1)

您可以使用dict comprehension

>>> lists = [['test', '1', '-1', '0', '-1'],['test2', '0', '1', '0', '-1']]
>>>
>>> endResult = { li[0]: map(int, li[1:]) for li in lists }
>>> endResult
{'test': [1, -1, 0, -1], 'test2': [0, 1, 0, -1]}

答案 2 :(得分:0)

这应该可行:

endResult = dict()
for x in lists:
    testname, testresults = x[0], x[1:]
    endResult[testname] = [int(r) for r in testresults]

如果发生了什么:

  • 2个测试名称相同?
  • 测试结果有4个以上元素?