當我嘗試運行此代碼時,我得到了TypeError這樣的結果:
items[i[id]] = i
TypeError: string indices must be integers
這是我的代碼:
x = {
'1': {
'id': 1,
'name': 'Burger',
'price': 10,
'quantity': 2
},
'2':{
'id': 2,
'name': 'Pizza',
'price': 15,
'quantity': 5
},
'3': {
'id': 1,
'name': 'Burger',
'price': 10,
'quantity': 5
},
}
items = {}
counter = 0
for i in x:
if items:
for j in items:
if j['id'] == i['id']:
j['quantity'] = j['quantity'] i['quantity']
counter = 1
else:
items[i[id]] = i
if counter != 1:
items[i[id]] = i
print(items)
uj5u.com熱心網友回復:
據我了解,您想獲得一個新的字典,統一的id價值和一個新quantity的是所有數量的總和id。如果我們假設idandquantity總是出現在xvalues 并且quantity是一個整數,你可以這樣做:
x = {
'1': {
'id': 1,
'name': 'Burger',
'price': 10,
'quantity': 2
},
'2':{
'id': 2,
'name': 'Pizza',
'price': 15,
'quantity': 5
},
'3': {
'id': 1,
'name': 'Burger',
'price': 10,
'quantity': 5
},
}
items = {}
counter = 0
for key, item in x.items():
if item['id'] in items:
items[item['id']]['quantity'] = item['quantity']
else:
items[item['id']] = item
print(items)
輸出:
{1: {'id': 1, 'name': 'Burger', 'price': 10, 'quantity': 7}, 2: {'id': 2, 'name': 'Pizza', 'price': 15, 'quantity': 5}}
uj5u.com熱心網友回復:
這是一個簡單的解決方法,使用 .values() 來獲取鍵值對的值,例如:for i in range x.values():
這是更正的代碼:
x = {
'1': {
'id': 1,
'name': 'Burger',
'price': 10,
'quantity': 2
},
'2':{
'id': 2,
'name': 'Pizza',
'price': 15,
'quantity': 5
},
'3': {
'id': 1,
'name': 'Burger',
'price': 10,
'quantity': 5
},
}
items = {}
counter = 0
for i in x.values():
if items:
for j in items.values():
if j['id'] == i['id']:
j['quantity'] = j['quantity'] i['quantity']
counter = 1
else:
items[i['id']] = i
if counter != 1:
items[i['id']] = i
print(items)
輸出 :
{1: {'id': 1, 'name': 'Burger', 'price': 10, 'quantity': 7}, 2: {'id': 2, 'name': 'Pizza', 'price': 15, 'quantity': 5}}
uj5u.com熱心網友回復:
默認情況下,id是 Python 中的內置函式。在您的代碼中,您永遠不會將變數設定id為其他任何值,id這個內置函式仍然如此。另外,當你寫的時候for i in x, wherex是一個字典,i是這個字典的一個鍵,這個鍵是一個字串。這兩件事一起解釋了你的錯誤。
在以下代碼中:
items[i[id]] = i
Python 解釋器嘗試將其id用作字串的索引i。這不起作用,因為id它是一個函式,而不是一個整數,因此結果是TypeError.
正如其他人所指出的,您可能打算寫i['id'],而不是i[id]. 此外,您可能打算i成為字典中的值之一x,而不是它的鍵之一。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/412413.html
標籤:
上一篇:如何從字典中的字典中迭代和附加鍵值對并將具有相同鍵的值存盤到串列python中
下一篇:如何從串列串列轉換為字典
