向嵌套字典插入值

2024-09-28 23:18:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中有一些嵌套的dict,需要一些帮助才能让我的代码完全正常工作。你知道吗

首先是代码:

data = {}

def insertIntoDataStruct(country, state,job,count,dict):
    if country in dict:
         dict[country][state] = {job: count}
    elif country not in dict:
         dict[country] = {state: {job: count}}
    elif state not in dict[country]:
         dict[country] = {state: {job: count}}
    elif job not in dict[country][state]:
         dict[country][state][job] = count
    else:
         dict[country][state][job] += count


 insertIntoDataStruct("US", "TX", 1234, 1, data)
 insertIntoDataStruct("IN", "KERELA", 1234, 1, data)
 insertIntoDataStruct("IN", "KERELA", 1234, 1, data)
 insertIntoDataStruct("US", "TX", 12345, 1, data)
 insertIntoDataStruct("US", "MI", 1234, 1, data)
 insertIntoDataStruct("IN", "M", 1234, 1, data)

 print data

目前正在打印:

{'US': {'MI': {1234: 1}, 'TX': {12345: 1}}, 'IN': {'M': {1234: 1}, 'KERELA': {1234: 1}}}

它是一本字典,在外部层次,国家,内部层次,国家,内部层次,工作:计数

由于Kerela1234应该有一个2,计数工作不正常,然后它似乎在用字典中已经存在的任何状态替换最新的状态。例如,TX 1234没有出现,因为它后来被TX 12345取代

提前谢谢大家的帮助!你知道吗


Tags: 代码indatacountnotjobcountrydict
1条回答
网友
1楼 · 发布于 2024-09-28 23:18:31

您的函数需要一些修复,请尝试以下操作:

def insertIntoDataStruct(country, state,job,count,dict):
    if country not in dict:
         dict[country] = {state: {job: count}}
    elif state not in dict[country]:
         dict[country][state] = {job: count}
    elif job not in dict[country][state]:
         dict[country][state][job] = count
    else:
         dict[country][state][job] += count

这可能是你最初的意思,如果国家不存在,那就创造它,否则如果国家不存在,等等。。。你知道吗

另一种方法是使用defaultdict

from collections import defaultdict, Counter
jobsdict = defaultdict(lambda: defaultdict(Counter))
jobsdict['US']['TX']['1234'] += 1

相关问题 更多 >