簡體   English   中英

如何從 python 中的字符串列表創建字典或 json?

[英]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.

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