使用python生成随机重复的json数据

问题描述 投票:-1回答:2

需要通过减去值以这种格式生成随机json数据

list=['20','30','50','1','200']

for n in list : 
    data= 
          {
           "total_members_present":1000    
           "count": n #(here 20) 
           "total_members_now":980 #(1000-n ,n =20),

          },
          {
           "total_members_present":980    
           "count": n #(here 30) 
           "total_members_now":950 #(980-n ,n =30),

          },

.........

它应该继续,直到列表结束。

python json python-3.x random
2个回答
1
投票

使用简单的迭代。

实施例:

lst = ['20','30','50','1','200']
result = []
start = 1000
for i in lst:
    data = {
           "total_members_present":start,    
           "count": i,
           "total_members_now":start - int(i)
          }
    start = data["total_members_now"]
    result.append(data)

print(result)

输出:

[{'count': '20', 'total_members_now': 980, 'total_members_present': 1000},
 {'count': '30', 'total_members_now': 950, 'total_members_present': 980},
 {'count': '50', 'total_members_now': 900, 'total_members_present': 950},
 {'count': '1', 'total_members_now': 899, 'total_members_present': 900},
 {'count': '200', 'total_members_now': 699, 'total_members_present': 899}]

1
投票

直截了当:

请勿将Python保留名称用作变量(listdict等)。

lst = ['20','30','50','1','200']
start_num = 1000
data = []

for n in map(int, lst):
    data.append({
           "total_members_present": start_num,
           "count": n,
           "total_members_now": start_num - n
          })
    start_num -= n

print(data)

输出:

[{'count': 20, 'total_members_now': 980, 'total_members_present': 1000},
 {'count': 30, 'total_members_now': 950, 'total_members_present': 980},
 {'count': 50, 'total_members_now': 900, 'total_members_present': 950},
 {'count': 1, 'total_members_now': 899, 'total_members_present': 900},
 {'count': 200, 'total_members_now': 699, 'total_members_present': 899}]
© www.soinside.com 2019 - 2024. All rights reserved.