从python字典中获取值并仅转换为一个字符串值

2024-09-28 01:31:27 发布

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

我需要从一个json文件中从一个特定的dictionary或dictionary列表中获取一些值,并将它们转换为一个键,value为string value。你知道吗

像这样的文件的例子。你知道吗

1)首先复制变量中的所有值。你知道吗

var fileA =

[{'key1': 'value1',
  'key2': 'value2',
  'key3': 'value3',
  '...': '...',
  'keyN': {'keyNN': [{'key_a': 'value_a',
     'key_b': 'value_b'},
    {'key_AA': 'value_AA'}]}},
 {'key1': 'value1',
  'key2': 'value2',
  'key3': 'value3',
  '...' :'...',
  'keyN': {'keyNN': {'key_a': 'value_a',
    'key_b': 'key_b'}}},
....]

2)评估两种情况后:第一种情况,如果类型是dictlist,因为'keyN'是dict,'keyNN'是dict,但在第一句中'key\ u a'是字典列表的一部分,在第二句中是其他字典。你知道吗

我手动解决了这部分问题,如果我把这段代码放在一个函数中并显示来自迭代的错误消息。你知道吗

如果结果是一个字典,我打印值并存储在一个变量中。你知道吗

 if type(fileA['keyN']['keyNN']) is dict:
            X= fileA['keyN']['keyNN'].copy()
            del (fileA['keyN'])
            X.popitem()
            X.update([fileA])
    print(X)

TypeError: string indices must be integers

在第二种情况下,如果类型是列表:

for index in fileA['keyN']['keyNN']:
    for key in index:
        new_values = ("{}={}".format(key, index[key]))
        print(new_values)
print(type(new_values))

打印结果

key_a=value_a
key_b=value_b
key_c=value_c
<class 'str'>

3)使用函数popitem()和update()。你知道吗

fileA[0].popitem()
fileA[0].update('keyN'= new_values)

结果


[{'key1': 'value1',
  'key2': 'value2',
  'key3': 'value3',
  '...': '...',
  'keyN': 'key_AA=value_AA'},

但预期结果应该是:

[{'key1': 'value1',
  'key2': 'value2',
  'key3': 'value3',
  '...': '...',
  'keyN': 'key_a=value_a,
           key_b=value_b,
           key_AA=value_AA'},
 {'key1': 'value1',
  'key2': 'value2',
  'key3': 'value3',
  '...' :'...',
  'keyN': 'key_a=value_a,
           key_b=key_b'}},
....]

如上一个示例所示,keyN是主键,所有嵌套的键和值只包含在一个字符串(keyN的值)中。你知道吗

我无法用新值存储和更新主键参数,我尝试了popitem和更新后。你知道吗

所以,一个小时又一个小时,检查所有选项后,我请求你的帮助。 谢谢


Tags: keynewvaluedictaakey2key1value1
1条回答
网友
1楼 · 发布于 2024-09-28 01:31:27

我解决了一部分,工作和之后,错误再次。你知道吗

for met in fileA:
    if met.get('keyN') is not None:
        if type(met['keyN']['keyNN']) is dict:
            new_values = []
            for key, value in met['keyN']['keyNN'].items():
                new_values.append("{}={}".format(key,value))
                new_str = ""
                for i in new_values:
                    new_str = ";".join(str(x) for x in new_values)
            met['keyN'].popitem()
            met.update(keyN= new_str)
        elif type(met['keyN']['keyNN']) is list:
            new_values = []
            for index in met['keyN']['keyNN']:
                for key in index:
                    new_values.append("{}={}".format(key, index[key]))
                    new_str = ""
                    for i in new_values:
                        new_str = ";".join(str(x) for x in new_values)
            met['keyN'].popitem()
            met.update(keyN= new_str)

***

                                     -
TypeError                                 Traceback (most recent call last)
<ipython-input-18-600979395481> in <module>
      1 for met in keyN:
      2     if met.get('keyN') is not None:
  > 3         if type(met['keyN']['keyNN']) is dict:
      4             new_values = []
      5             for key, value in met['keyN']['keyNN'].items():

TypeError: string indices must be integers



相关问题 更多 >

    热门问题