如何在Python中使用来自其他字典的键和来自csv文件的值来创建字典?

2024-09-27 20:20:33 发布

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

我需要一些关于Python的作业的帮助。任务是用其他字典中的键和csv文件中的值创建一个字典。所有这些都需要用一个带参数的函数来完成(另一个字典是\u csv \u文件)

另一本字典如下所示:

{1: 'Bob West', 2: 'Hannah North', 3: 'Bruce South', 4: 'Anna 
Bell', 5: 'George Smith'}

我从函数中得到了那本字典

def names_dictionary():
    with open("filename.csv", 'r') as d:
        x = {num+1:name.split(" ",1)[-1].strip() for (num, name) 
        in enumerate(d)}
    print(x)

从这本词典中,我需要值(名称)成为新词典中的键。你知道吗

CSV文件在excel中如下所示

             A                         B

1.1 11
2.3 12
3.2 14
4.7 11
5.5 12

A栏的所有内容

从这里开始,我希望每行的第二个数字是新字典中的值。所以(11,12,14,11,12)。你知道吗

我想要的结果是

{’Bob West’: 11, ’Hannah North’: 12, ’Bruce South’: 14, ’Anna 
Bell’: 11, ’George Smith’: 12}

目前为止的功能。你知道吗

def names(names_dictionary, csvfile):

最后,我需要一个主要的函数,它将:

鲍勃·韦斯特买了11根香蕉 汉娜·诺斯买了12根香蕉 布鲁斯南方得到14根香蕉 安娜·贝尔得到了11根香蕉 乔治·史密斯得到了12根香蕉


Tags: 文件csv函数字典namesbobwestsouth
2条回答

如何从csv文件中读取列已经被讨论了here。你知道吗

我假设您已经构建了一个带有值[11, 12, 14, 11, 12]的列表colB。如果d是您的原始词典,您现在可以使用词典理解

{v:colB[k - 1] for k, v in d.items()}

构造结果。你知道吗

演示:

>>> d = {1: 'Bob West', 2: 'Hannah North', 3: 'Bruce South', 4: 'Anna Bell', 5: 'George Smith'}
>>> colB = [11, 12, 14, 11, 12]
>>> result = {v:colB[k - 1] for k, v in d.items()}
>>> result
{'Bob West': 11, 'Hannah North': 12, 'Bruce South': 14, 'Anna Bell': 11, 'George Smith': 12}

我相信你自己会想出印刷的办法的。你知道吗

不确定最后是否需要一个或两个函数。这里我把它们作为两个独立的函数。你知道吗

import pandas as pd

#read in the file
csvfile = pd.read_csv(r'C:\Users\wrich\Desktop\data.csv')

#import the other dictionary
names_dictionary = {1: 'Bob West', 2: 'Hannah North', 3: 'Bruce South', 4: 'Anna Bell', 5: 'George Smith'}


def names(names_dictionary, csvfile):
    #manipulate the file to get the values you want
    csvfile = pd.DataFrame(csvfile['   A                        '].str.split(' ',1).tolist(), columns = ['id','value'])
    myValues = list(csvfile['value'])

    #output the result
    result = {}
    for entry in range(len(myValues)):
        result[names_dictionary[entry + 1]] = myValues[entry]

    return result

result = names(names_dictionary, csvfile)

def mainFunction(result):

    myString = ''

    for val in result.keys():

        myString += val + ' got ' + str(result[val]) + ' bananas '

    return myString

answer = mainFunction(result)

相关问题 更多 >

    热门问题