首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法从三个独立的for循环中合并三个dict?

有没有办法从三个独立的for循环中合并三个dict?
EN

Stack Overflow用户
提问于 2018-05-29 06:40:39
回答 1查看 67关注 0票数 0

我使用Pandas根据CSV文件中三个单独列的数据创建三个列表。我的列表是:

order_list = df['order'][:10].tolist()) 
user_id_list = df['user_id'][:10].tolist())
company_id_list = df['company_id'][:10].tolist())

在我的create_order()函数中,我循环遍历每个列表,并使用enumerate()将条目添加到三个独立的字典中。例如:

def create_order(orders, users, companies):

    for index, order in enumerate(orders):
        x = {
            'name': order,
        }
    for index, user_id in enumerate(users):
        y = {
            'user': user_id,
        }
    for index, company_id in enumerate(companies):
        z = {
            'company': company_id,
        }

if __name__ == '__main__':
    create_order(order_list, user_id_list, company_id_list)

我希望将这三个字典合并在一起,并从CSV文件中返回每行数据的数据。但是,我需要order对象是唯一的。我已经能够使用unpacking generalizations合并返回的字典。例如{**x, **y}。如果我使用嵌套的for循环,那么我能够以这种方式完成合并字典的唯一方法;这会阻止我返回唯一的订单。

最好的方法是将我的字典合并到一个字典中,这样我就可以循环并返回具有唯一顺序的唯一数据?

使用更正进行编辑

以下是我的原始DF输出:

     company_id                 user_id          order
  0         111                     222           order 1
  1         111                     222           order 1
  2         111                     222           order 1
  3         111                     222           order 2
  4         111                     222           order 2
  5         111                     222           order 3

下面是我想要的所有唯一订单的输出示例:

company_id   user_id               order
       111       222             order 1
       111       222             order 2
       111       222             order 3

尝试使用for循环解决这个问题的原因是,需要将所有需要的输出返回一个字典,然后通过Google DFP API导入到数据库中。

以下是在@MeHdi的指导下获得所需输出的工作代码。

df = pd.read_csv('order_data.csv')

order_list = df['order'].tolist()
user_id_list = df['user_id'].tolist()
company_id_list = df['company_id']].tolist()

for x in company_id_list:
    company_id = int(x)

    df = pd.DataFrame(
        {
            'name': order_list,
            'userId': user_id_list,
            'companyId': company_id
        }
    )

 list_obj = df.reindex(columns=['companyId', 'userId', 'name']).drop_duplicates()

 records = list_obj.to_dict('records')
 print(records)

这将返回上面列出的所需输出。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50574173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档