【问题标题】:Converting two lists into dynamic nested dict then to JSON将两个列表转换为动态嵌套字典,然后转换为 JSON
【发布时间】:2019-02-12 20:51:05
【问题描述】:

我必须浏览“颜色”列表:

list1 = ["red","green","other"]

对于每一个,我需要查看每个可能匹配的列表:

list2 = ["cherries","rasperries","guava","apple","watermelon","grapes","banana"]

如果 list2 项的条件很好,那么我需要创建一个 dict 然后将输出写入 JSON 文件。

for x in list1:
  print x
  for y in list2:
    if y == criteria:
      myDict = {'list1-item': 'fruit1':'apple'}

我的预期输出是这样的:

data = {'red': {'fruit1': 'cherries', 'fruit2': 'rasperries', 'fruit3': 'guava'},
      'green': {'fruit1': 'apple'},
      'other': {'fruit1': 'watermelon', 'fruit2': 'grapes', 'fruit3': 'banana'}}

写入 JSON

with open("data_file.json", "w") as write_file:
    json.dump(data, write_file)

不太熟悉根据需要构建动态字典。

【问题讨论】:

  • 我不清楚你在问什么。您在这里有多个步骤,请尝试单独解决每个步骤,如果遇到困难,请提供minimal reproducible example。到目前为止,您发布的内容在语法上无效。
  • 我同意@jonrsharpe,我不明白 list2 中的元素 y 与标准之间的关系是什么。我想 list2 的元素有一些属性可以对这些属性应用一些标准,但之前的想法只是一个猜测。

标签: python json list dictionary


【解决方案1】:

喜欢吗?

import pprint
from random import randint
list1 = ["red", "green", "other"]
list2 = ["cherries", "rasperries", "guava", "apple", "watermelon", "grapes", "banana"]


myDict = dict()
for x in list1:
    for y in list2:
        if 1 == randint(0, 1):
            l = len(myDict.get(x, []))
            if l == 0:
                myDict[x] = dict()
            myDict[x]['fruit{}'.format(l)] = y

pprint.pprint(myDict)

【讨论】:

    猜你喜欢
    • 2020-09-03
    • 2017-07-29
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多