Dict在Python中是如何工作的?它是类中的静态成员吗?

Dict在Python中是如何工作的?它是类中的静态成员吗?,python,python-3.x,Python,Python 3.x,当我试图用Python将.csv文件中的数据转换为dict时,我遇到了这些问题。我在Python3.4和Win7中运行。这是我的main.py: import csv class user(object): user_id = "" # User's ID number_to_item_info = {} # Mapping from int to list (contains a dict) def __init__(self, user_id, number, c

当我试图用Python将.csv文件中的数据转换为dict时,我遇到了这些问题。我在Python3.4和Win7中运行。这是我的main.py:

import csv

class user(object):
    user_id = ""  # User's ID
    number_to_item_info = {} # Mapping from int to list (contains a dict)
    def __init__(self, user_id, number, category):
        self.user_id = user_id
        if number in self.number_to_item_info:
            self.number_to_item_info[number].append([category])
        else:
            self.number_to_item_info.setdefault(number, [[category], ])

users_group = []

with open('test.csv', newline='\n') as csvfile:
    reader = csv.reader(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)
    for row in reader:
        # print(row)
        User = user(row[0], row[1], row[2])
        if 'number' in User.number_to_item:
            users_group.append(User)
    User.number_to_item.clear() # Actually I really want to know this sentence

for user in users_group:
    print(user.user_id, user.number_to_item_info)
在my test.csv中,数据是(例如):

当我在Powershell中运行它时(抱歉),我得到以下结果:

user_id {'number': [['category']]}
122333 {'1': [['1231234']]}
333221 {'1': [['2211222']]}
112233 {'2': [['2223444']]}
但是,在我删除“User.number\u to\u item.clear()”之后,我将在dict中获得我不想要的更多信息

问题是:如果我删除那个句子,我会在每个成员的dict中得到额外的重复键和值;如果我不删除这句话,我将在users\u组的dict中除了user\u id之外什么也得不到,这对每个成员都是正确的。 我猜dict是Python中的静态类memeber,对吗?也许我错了?我怎样才能解决这个问题

注:数据和一些代码是不完整的,因为我修改了它。如果有问题,请指出。谢谢

class user(object):
    number_to_item_info = {} # Mapping from int to list (contains a dict)
上述代码将
number\u to\u item\u info
创建为类属性。听起来您希望它是一个实例属性。在这种情况下,将
number\u to\u item\u info
的创建移动到
\u init\u()方法中:

class user(object):
    def __init__(self, user_id, number, category):
        self.number_to_item_info = {} # Mapping from int to list (contains a dict)
参考:


如果这对您有所帮助,这里有一篇关于Python的
Dict
实现的相当深入的文章:啊
Dict
文字,在这里:)在这种情况下,我建议您立即停止正在进行的任何工作并完成该操作。第一次正确地学习这门语言可以防止以后产生许多误解。
class user(object):
    def __init__(self, user_id, number, category):
        self.number_to_item_info = {} # Mapping from int to list (contains a dict)