![](/img/trans.png)
[英]How to create a dictionary from a list of strings with same key, value in python
[英]how to create dictionary or json from list of strings in python?
我正在嘗試從字符串列表中創建字典或 json,這將是字典的值,並且我有字典鍵將是匹配值。 我認為完成這項工作對我來說很直觀,但我有以下錯誤:
> Traceback (most recent call last):
> output[elm].append(k) TypeError: list indices must be integers or slices, not str
我很好奇是什么導致了這個問題。 誰能指出我的代碼有什么問題?
我的嘗試
這是我的代碼:
更新
lst = {api, 1,0,0}
mystring = lst.split(",")
mystring = ['api', '1', '0', '0']
names = {'name', 'mayor', 'minor', 'patch'}
output =[]
for elm in range(len(names)):
for k in range(len(mystring)):
output[elm].append(k)
print(output)
我該如何解決這個錯誤? 有沒有有效的方法從字符串列表中制作字典或 json 而不使用嵌套的 for 循環? 有更好的主意嗎?
所需的 output :
我想得到字典或 json 是這樣的:
{
"mayor": 1,
"minor": 0,
"name": "api",
"patch": 0
}
如果我的編碼缺陷很小,我很抱歉,我找不到問題的根源。 謝謝
一個整潔的單線:
my_string = ['api', '1', '0', '0']
names = ['name', 'mayor', 'minor', 'patch']
output = {names[i]: my_string[i] for i in range(len(my_string))}
print(output)
這應該給出:
{'name': 'api', 'mayor': '1', 'minor': '0', 'patch': '0'}
請注意,您的變量names
不再是一個集合; 沒有必要有一套。 此外,如果有集合,代碼將無法工作,因為集合不可下標。
您的代碼中有很多錯誤:在這里,您聲明的是一個列表,而不是字典:
output =[]
在這里,您將查看您的集合和列表的長度,您必須對它們進行 go :
for elm in range(len(names)):
for k in range(len(mystring)):
使用內置zip function。 Zip 適用於列表,因此您需要先將您的集合轉換為列表。 當然,依賴集合中的順序並不是一個好主意,所以最好將兩個列表都創建為列表
mystring = ['api', '1', '0', '0']
names = {'name', 'mayor', 'minor', 'patch'}
output = zip(list(names),mystring)
print(dict(output))
或使用兩個列表作為輸入
mystring = ['api', '1', '0', '0']
names = ['name', 'mayor', 'minor', 'patch']
output = zip(names, mystring)
print(dict(output))
兩種印刷品
{'name': 'api', 'patch': '1', 'mayor': '0', 'minor': '0'}
當然,如果您希望數字是數字而不是字符串,請確保它們的類型在您傳遞給zip
的列表中是正確的:
mystring = ['api', 1, 0, 0]
names = {'name', 'mayor', 'minor', 'patch'}
output = zip(list(names),mystring)
print(dict(output))
印刷
{'patch': 'api', 'minor': 1, 'mayor': 0, 'name': 0}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.