Python 根据字典项更改列表

Python 根据字典项更改列表,python,dictionary,Python,Dictionary,您好,我有一个如下列表: >>>ids '70723295', '75198124', '140', '199200', '583561', '71496270', '69838760', '70545907', ...] 我还有一本字典,给那些数字起了一个“名字”。现在我想创建一个只包含姓名的新列表,其顺序与前面的数字相同。。因此,用字典中正确的名字替换顺序正确的数字 我试过: with open('/home/anja/Schreibtisch/Mast

您好,我有一个如下列表:

>>>ids
 '70723295',
 '75198124',
 '140',
 '199200',
 '583561',
 '71496270',
 '69838760',
 '70545907',
 ...]
我还有一本字典,给那些数字起了一个“名字”。现在我想创建一个只包含姓名的新列表,其顺序与前面的数字相同。。因此,用字典中正确的名字替换顺序正确的数字

我试过:

with open('/home/anja/Schreibtisch/Master/ABA/alltogether/filelist.txt') as f:
    ids = [line.strip() for line in f.read().split('\n')]

rev_subs = { v:k for v,k in dictionary.items()}
new_list=[rev_subs.get(item,item)  for item in ids]

#dict looks like:
 '16411': 'Itgax',
 '241041': 'Gm4956',
 '22419': 'Wnt5b',
 '20174': 'Ruvbl2',
 '71833': 'Dcaf7',
 ...}
但新的_列表仍然与ids相同


我做错了什么?

也许字典键的格式与您认为的不一样?可能字典包含整数,而ID是字符串。我将对此进行调查,它似乎是类型不匹配而不是空(或不匹配)字典。

您的字典键是
bs4.element.NavigableString
对象而不是字符串,因此您不能使用字符串作为键来查找其值

您可以通过在构建
rev_subs
时将键转换为字符串来解决此问题:

rev_subs = {str(k): v for k, v in dictionary.items()}

dictionary
的键是整数还是字符串?@blhsing bs4.element.NavigableString,如果我做了types1=set(在final_dictionary1.keys()中为k键入(k)),我得到:{NoneType,bs4.element.NavigableString}你没有字符串,而是bs4.element.NavigableString,所以匹配不起作用。您需要将bs4.element.NavigableString对象转换为string,查看上的文档,您需要使用unicode(您的_元素)来转换它。但是我再也没有字典了。。那么,我如何将其用于我的新列表?现在看起来是这样的:\n66583\n100504140\n20747\n105638\n320237\n382030\n56758'我对BeautifulSoup没有经验(我只是知道,因为我搜索了你的类),我真的不知道如何处理(我会寻找类似的东西)。在核心部分,当您创建字典时,您的键必须是字符串。顺便说一句,你的ID看起来很像整数,你确定使用字符串是最好的方法吗?注意,如果ID有前导0(例如0042),那么我错了,您必须使用字符串。