Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为无序数据追加Python字典_Python - Fatal编程技术网

为无序数据追加Python字典

为无序数据追加Python字典,python,Python,我有一个很大的JSON文件,我试图从中提取特定数据,然后将子集合并到字典中。在JSON文件中,多个对象引用相同的名称(person),但每个对象包含关于此人的单独信息(例如,一个对象有电话号码,另一个对象有地址,另一个对象有电子邮件)。到目前为止,提取数据还不是一个问题。我努力的地方是建立字典来整合一切 我想做的是: 1) 创建字典: names = {} 2) 由于数据无序,我需要为此人创建一个密钥 n = name names['name'] = n 3) 当我识别记录类型时,将per

我有一个很大的JSON文件,我试图从中提取特定数据,然后将子集合并到字典中。在JSON文件中,多个对象引用相同的名称(person),但每个对象包含关于此人的单独信息(例如,一个对象有电话号码,另一个对象有地址,另一个对象有电子邮件)。到目前为止,提取数据还不是一个问题。我努力的地方是建立字典来整合一切

我想做的是:

1) 创建字典:

names = {}
2) 由于数据无序,我需要为此人创建一个密钥

n = name
names['name'] = n 
3) 当我识别记录类型时,将persons数据添加到字典中

p = phoneNumber
a = Address
names[n]['phoneNumber'] = p
names[n]['Address'] = a
最后,一旦对整个JSON文件进行了迭代,字典应该是完整的


我怀疑我的代码在创建一个以前不存在的新用户时起作用,但是当我添加额外信息时,我会覆盖先前的键而不是追加字典条目

我想知道的是:

1) 如果我的覆盖与追加逻辑正确


2) 我怎样才能做到这一点?使用字典对这件事有害吗?

如果我理解正确,你是json,看起来是这样的:

names = {
    'Jack Benson': {
        'phone number': '+4435025015',
        'adress': '21 jump street'},
    'Antoine Vincent': {
        'phone number': '+4421545486',
        'adress': '742 Evergreen Terrace '}
        }
要创建类似的内容,最简单的方法可以是:

names = {}
names['Jack Benson'] = {}
names['Jack Benson']['phone number'] = '+4435025015'
names['Jack Benson']['adress'] =  '21 jump street'

names['Antoine Vincent'] = {}
names['Antoine Vincent']['phone number'] = '+4421545486'
names['Antoine Vincent']['adress'] =  '742 Evergreen Terrace'
1) 如果我的覆盖与追加逻辑正确

如果名字是空的,是的,一切都是正确的

2) 我怎样才能做到这一点?使用字典对这件事有害吗? 对于简单的数据结构,使用python内置总是一个好主意。对于json,它可读且易于序列化

祝你好运


Lio

“我正在覆盖先前的键,而不是追加字典条目。”当然是的
dict
对象具有唯一的键,您不能“附加”到dict,而是为键指定一个值。如果指定给同一个键,它将覆盖。不确定你想说什么,什么是示例输入/输出?如果你创建了一个示例,你会得到更多更好的答案。尤其要确保输入和预期的测试数据是完整的(不是伪数据),并且可以很容易地剪切和粘贴到编辑器中,以便测试建议的解决方案。听起来您需要
defaultdict
并用
d=defaultdict(dict)初始化它
其中每个键是名称,值是字典,必要的属性是键,值是实际值
names['name']=n
应该完成什么?根据下面的内容,它应该是关于一个名字为“name”的人的数据。@juanpa.arrivillaga正确,我想附加dict,如果已经存在一个键,则附加该键的加法。lio发布的内容看起来是正确的,但我的数据没有排序。当我迭代我的JSON文件时,我想使用它们的名称作为键逐块添加数据。最后,dict应该像lio在下面发布的一样。谢谢,这很有帮助。由于我的数据是无序的,我如何检查Person密钥是否已经存在,以避免执行“names['Jack Benson']={}”和删除先前添加的内容?是否有一个“=+”选项我可以做(创建是不存在的,如果已经存在则追加?@EthanB,AFAIK没有一个“+=”选项用于dict,但是您可以使用“if key in dict”轻松检查一个键是否存在。(顺便说一句,这是另一个问题的答案。下次,尝试先搜索。)
n = name
names['name'] = n