输入中有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()}
答案 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')}