簡體   English   中英

如何在Python3中從輸入字符串創建字典

[英]How to create a dictionary from input string in Python3

我在輸入中有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()}

盡管Jean已經提供了答案,但我想我也應該添加一個答案,它使用生成器來獲取並拆分輸入,然后將dict理解成字典。

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

您在內部循環中迭代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))

您只是在空白處分割,而不會給您想要的對。 它將為您提供由空格分隔的單詞的列表(例如['first', '10', second', '20'] )。 嘗試類似:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM