如何只从包含数字和名称的值列表中检索名称?

时间:2018-07-27 06:45:58

标签: python python-2.7 list dictionary

我有一个带有数字的名单。我想在文本文件中写名字。但是我无法删除这些数字。

print ("node_result[0]")
print (node_result[0])
print ("node_result[1]")
print (node_result[1])

for i in range(0, len(nodeName)):
    temp=str(node_result[i])
    if not node_result[i] == {}:
        dosya.write(nodeName[i] + ":  ")
        dosya.write(temp)
        dosya.write('\n')

dosya.close()

下面的列表是上述打印命令的输出:

node_result[0]
{32: 'Konstantinos'}
node_result[1]
{32: 'Silvija', 33: 'John', 34: 'Micheal'}

如何获取不带数字的这些名称?

3 个答案:

答案 0 :(得分:1)

尝试以下

# utility function to flatten a list of lists
flatten = lambda l: [item for sublist in l for item in sublist]

# define your test data
node_result = [
    {32: 'Konstantinos'},
    {32: 'Silvija', 33: 'John', 34: 'Micheal'}]

# fetch names and flatten results
names = flatten([d.values() for d in node_result])
# => ['Konstantinos', 'Silvija', 'John', 'Micheal']

如果要保留名称属于一个node_result项目的信息,可以省略对flatten的调用

names = [d.values() for d in node_result]
# => [['Konstantinos'], ['Silvija', 'John', 'Micheal']]

答案 1 :(得分:0)

node_result的每个元素都是完整的字典。要仅获取字典值,请调用.values()

for i in range(0, len(nodeResult)):
    if not node_result[i] == {}:
        print(node_result[i].values())

.values()返回具有给定索引node_result的所有值的列表。

答案 2 :(得分:0)

a=[{32: 'Konstantinos'},{32: 'Silvija', 33: 'John', 34: 'Micheal'}]
name_list=[]
for i in a:
    for j in i.values():
        name_list.append(j)
print (name_list)

结果将是:

  

['Konstantinos','Silvija','John','Micheal']