python中如何从列表中提取单引号

2024-04-16 08:27:21 发布

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

我想为我的字典提取关键字,但问题是关键字用单引号括起来了

from pyspark import SparkContext, SparkConf
import collections,shutil,os

conf = SparkConf().setMaster("local").setAppName("Word_count")
sc=SparkContext(conf=conf)

rdd=sc.textFile("/home/karan/dummy files/patient.csv")
rdd2=sc.textFile("/home/karan/dummy files/doctors.csv")
def nameOfDoc():
    names={}
    with open("/home/karan/dummy files/doctors.csv") as l:
        for x in l:
            nameExt=x.split('\t')
            names[int(nameExt[0])]=nameExt[1]
    return names
docName=sc.broadcast(nameOfDoc())

docId=rdd.map(lambda x:x.split(",")).\
        map(lambda x:(x[3],1)).\
        reduceByKey(lambda x,y:x+y).\
        map(lambda x:(x[1],x[0])).\
        sortByKey(ascending=False).\
        map(lambda x:(x[1],x[0]))
rs=docId.collect()
if os.path.exists("/home/karan/output2"):
    shutil.rmtree("/home/karan/output2")
for x in rs:
    print(docName.value[x[0]],end=" -> ")
    print(x[1])
sc.parallelize(rs).saveAsTextFile("output2")

我的代码给了我这个错误

File "/home/karan/hospitalsDemo.py", line 28, in print(docName.value[x[0]],end=" -> ") KeyError: '2'


Tags: csvlambdainmaphomenamesconffiles
1条回答
网友
1楼 · 发布于 2024-04-16 08:27:21
for x in rs:
    print(docName.value[x[0]],end=" -> ")
    print(x[1])

我认为Green斗篷人把字符串转换成整数是正确的。 由于您将x用于x[0]和x[1],并且为了避免键可能无法转换为整数的情况,我认为您应该

for x in rs:
    try:
        xkey = int(x)
    except:
        xkey = x

    print(docName.value[xkey[0]],end=" -> ")
    print(xkey[1])

相关问题 更多 >