如何在Python3中从输入字符串创建字典

时间:2017-06-26 11:14:06

标签: python dictionary list-comprehension

输入中有4行,如下所示:

first 10
second 20
third 30
fourth 40

我想创建一个单词作为键和数字作为值的字典:

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}

如何通过使用dict理解来做到这一点? 这是有效的:

d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]

这不是:

x = {s: v for k in range(4) for s, v in input().split()}

3 个答案:

答案 0 :(得分:2)

虽然Jean已经提供了一个答案,但我想我也会添加这个,它使用生成器来获取和分割输入,然后用词汇理解来形成字典。

{ k : v for k, v in (input().split() for _ in range(4)) }

答案 1 :(得分:1)

您在内循环中迭代split结果的值,您只需要分配&解压缩拆分值。不幸的是,你不能在列表理解中做到这一点。

但是你可以通过生成器理解来产生夫妻而不是字典理解

x = dict(input().split() for k in range(4))
但是,这很简单,但不会将字符串转换为整数。要在保持列表推导的同时将第二项转换为整数,可以在拆分结果上使用enumerate,并使用三元表达式测试这是否是第二项,这会使行复杂化,但会将值作为整数生成。

x = dict([int(x) if i==1 else x for i,x in enumerate(input().split())] for k in range(4))

答案 2 :(得分:0)

你只是简单地拆分空白而不会给你所需的配对。它会给你一个由空格分隔的单词列表(如['first', '10', second', '20'])。尝试类似:

x = {item.split()[0]: item.split()[1] for item in input().split('\n')}