我試圖names根據名稱的第一個字母將串列中的每個字典分成它們自己的類別。我對編碼很陌生,我嘗試過使用其他功能,update但我未能成功實作最終結果。我不知道如何在嵌套字典中附加字典。
names = [{"name":"alpha"}, {"name":"apple"}, {"name":"bravo"}, {"name":"charlie"}, {"name":"chucky"}]
foo = {
"a" : {},
"b" : {},
"c" : {}
}
最終結果應該是:
foo = {
"a" : {
{"name":"alpha"},
{"name":"apple"}
},
"b" : {
{"name":"bravo"}
},
"c" : {
{"name":"charlie"},
{"name":"chucky"}
}
}
uj5u.com熱心網友回復:
字典是鍵值對,因此您無法獲得所需的輸出。
字典鍵也必須是唯一的,因此update使用已經存在的鍵呼叫字典只會覆寫該值。
聽起來您想要的是將串列作為嵌套結構,如下所示:
foo = {}
for item in names:
char = item["name"][0]
try:
foo[char].append(item)
except KeyError:
foo[char] = [item]
print(foo)
輸出
foo = {
"a" : [
{"name":"alpha"},
{"name":"apple"}
],
"b" : [
{"name":"bravo"}
],
"c" : [
{"name":"charlie"},
{"name":"chucky"}
]
}
uj5u.com熱心網友回復:
你的目標是這樣的:
foo = { # dict
"a" : [ # list
{"name":"alpha"}, # dict
{"name":"apple"}
],
"b" : [
{"name":"bravo"}
],
"c" : [
{"name":"charlie"},
{"name":"chucky"}
]
}
提示: 迭代名稱中的專案并更新/附加 foo[ item[0] ],item[0]是第一個字母 (確切地說是item['name'][0] ) 。
uj5u.com熱心網友回復:
#try this
names = [{"name":"alpha"}, {"name":"apple"}, {"name":"bravo"},
{"name":"charlie"}, {"name":"chucky"}]
foo = {
"a" : {},
"b" : {},
"c" : {}
}
for keys in foo.keys():
lists=[]
for name in names:
for key,val in name.items():
if val[0].lower()==keys.lower():
lists.append(name)
foo[keys]=lists
print(foo)
**兄弟你在這里犯了一些錯誤:
"a" : {
{"name":"alpha"},
{"name":"apple"}
}
-dict 總是接受鍵和值對,不僅因為它發生了值,如果將來你嘗試在沒有鍵的情況下附加字典,所以總是使用串列而不是字典**
foo = {
"a" : [
{"name":"alpha"},
{"name":"apple"}
],
"b" : [
{"name":"bravo"}
],
"c" : [
{"name":"charlie"},
{"name":"chucky"}
]
}
uj5u.com熱心網友回復:
以下字典無效,因為您不能將用逗號分隔的字典作為另一部字典的唯一內容。字典應該包含鍵值對。
foo = {
"a" : {
{"name":"alpha"},
{"name":"apple"}
},
"b" : {
{"name":"bravo"}
},
"c" : {
{"name":"charlie"},
{"name":"chucky"}
}
}
例如在下面的鍵中,值對a是鍵,到這部分就可以了。部分{{"name":"alpha"},{"name":"apple"}}是您在另一個字典中有用逗號分隔的字典的問題,這將導致錯誤TypeError: unhashable type: 'dict'
"a" : {
{"name":"alpha"},
{"name":"apple"}
},
但是,您可以將字典串列作為鍵的值。
您可以使用以下方法創建一個。
import json
names = [{"name":"alpha"}, {"name":"apple"}, {"name":"bravo"}, {"name":"charlie"}, {"name":"chucky"}]
foo = {}
for item_dict in names:
val = item_dict["name"]
foo.setdefault(val[0], []).append(item_dict)
print(json.dumps(foo, indent=2))
這將輸出:
{
"a": [
{
"name": "alpha"
},
{
"name": "apple"
}
],
"b": [
{
"name": "bravo"
}
],
"c": [
{
"name": "charlie"
},
{
"name": "chucky"
}
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/485529.html
標籤:Python python-3.x
