![](/img/trans.png)
[英]How do I use the value of a key-value pair of a dictionary nested inside a list in a conditional statement?
[英]How do I overwrite value in nested dictionary with if else statement nicely
我有一個嵌套字典,我想在其中存儲一些信息。
d = {0:{'a':無,'b':無,'c':無},1:{'a':無,'b':無,'c':無},2:{ 'a':無,'b':無,'c':無}}
每次程序收到結果時,我都想重寫值“a”、“b”和“c”。
如果值 'a' 為 none,則應僅填充 'a',否則如果 'a' 不是 none 且 'b' 為 none,則填充 'b',如果 'a' 和 'b' 為 none,則填充'c',如果全部填滿,將所有內容移到前面並填充'c'。
我的代碼是這樣的:
a_conditon = d.get(index, {}).get('a') is None
b_conditon = d.get(index, {}).get('b') is None
c_conditon = d.get(index, {}).get('c') is None
if (a_conditon):
d.setdefault(index, {})['a']= bool(random.getrandbits(1))
elif ((not a_conditon) and b_conditon):
d.setdefault(index, {})['b']= bool(random.getrandbits(1))
elif ((not a_conditon) and (not b_conditon) and c_conditon):
d.setdefault(index, {})['c']= bool(random.getrandbits(1))
elif ((not a_conditon) and (not b_conditon) and (not c_conditon)):
d.setdefault(index, {})['a']= d.get(index, {}).get('b')
d.setdefault(index, {})['b']= d.get(index, {}).get('c')
d.setdefault(index, {})['c']= bool(random.getrandbits(1))
但是,我馬上就填滿了所有 3 個條目。 有人可以幫我指出這一點嗎? 我不知道哪里出錯了
我根據您描述的邏輯嘗試了代碼,並將其放入索引值為 0、1、2 的循環中。 這對我來說似乎很好。 您能否驗證循環並且每次在循環中都評估條件檢查a_condition
、 b_condition
和c_condition
? 此外,示例中有 2 個循環:
例如,在第一個循環中,對於索引值為 0,執行第一個狀態以產生輸出{0: {'a': True, 'b': None, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
,然后是下一個狀態{0: {'a': True, 'b': False, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
這是代碼和所需的輸出。
while(index <=2):
count = 3
while(count>=0):
a_conditon = d.get(index, {}).get('a') is None
b_conditon = d.get(index, {}).get('b') is None
c_conditon = d.get(index, {}).get('c') is None
if (a_conditon):
d.setdefault(index, {})['a']= bool(random.getrandbits(1))
elif ((not a_conditon) and b_conditon):
d.setdefault(index, {})['b']= bool(random.getrandbits(1))
elif ((not a_conditon) and (not b_conditon) and c_conditon):
d.setdefault(index, {})['c']= bool(random.getrandbits(1))
elif ((not a_conditon) and (not b_conditon) and (not c_conditon)):
d.setdefault(index, {})['a']= d.get(index, {}).get('b')
d.setdefault(index, {})['b']= d.get(index, {}).get('c')
d.setdefault(index, {})['c']= bool(random.getrandbits(1))
print(d)
count -=1
index += 1
運行索引值為 0,1,2 時的輸出
{0: {'a': True, 'b': None, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': True, 'b': False, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': True, 'b': False, 'c': True}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': False, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': False, 'c': True}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': True, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': True, 'b': False, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': True, 'b': False, 'c': False}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': False, 'b': False, 'c': True}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.