[英]Elegant way to convert string to dict and back
是否有一種優雅的單線將這種類型的字符串轉換為 dict? 我現在用谷歌搜索了一個小時,但是沒有幾個分割字符串的循環,我無法讓它工作。
Input = "2:9, 6:90, 7:60"
Output = {'2': 9, '6': 90, '7': 60}
我還需要從字典到字符串的反向操作。
性能方面最有效的將是正常for
循環:
my_string = "2:9, 6:90, 7:60"
my_dict = {}
for s in my_string.split(', '):
k, v = s.split(":")
my_dict[k] = int(v)
其中my_dict
將包含:
>>> my_dict
{'2': 9, '7': 60, '6': 90}
要取回相同的字符串,您可以在dict.items()
) 上執行.join()
) 為:
>>> ", ".join("{}:{}".format(k, v) for k, v in my_dict.items())
'2:9, 7:60, 6:90'
或者,您也可以將 dict 類型轉換為字符串並對其進行一些格式化,例如:
>>> str(my_dict)[1:-1].replace(": ", ":").replace("'", "")
'2:9, 7:60, 6:90'
您可以使用ast.literal_eval
並將括號放在字符串的每一端,盡管您的鍵將是整數而不是字符串。
from ast import literal_eval
Input = "2:9, 6:90, 7:60"
Output = literal_eval(f"{{{input}}}")
{2: 9, 6: 90, 7: 60}
要將 output 修復為字符串鍵,只需手動轉換它們
Output = dict(zip(map(str, Output), Output.values()))
{'2': 9, '7': 60, '6': 90}
在不導入任何庫的情況下,您需要使用str.split
Output = dict(s.split(':') for s in Input.split(', '))
{'2': '9', '6': '90', '7': '60'}
雖然現在你的值是字符串,所以你需要修復它。
Output = dict(zip(Output, map(int, Output.values())))
{'2': 9, '7': 60, '6': 90}
好吧,不問問題,如果你想要一個使鍵成為字符串而值成為 int 的單行:
dict([[j[0].strip(), int(j[1])] for j in [i.split(':') for i in Input.split(',')]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.