python字典如何根据value返回对应的keys?value值不唯一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python字典如何根据value返回对应的keys?value值不唯一相关的知识,希望对你有一定的参考价值。

test1 = '1': '23', '5': '55', '9': '77'
test2 = '3': '20', '7': '20', '11': '20'
keys1 = list(test1.keys())
keys2 = list(test2.keys())
for i in range(len(test1)):
value1 = test1[keys1[i]]
value2 = test2[keys2[i]]
if value1 > value2:
print([k for k, v in test1.items() if v == value1], value1)
print([k for k, v in test2.items() if v == value2], value2)
else:
pass
continue
print(test1, "test1")
print(test2, "test2")

返回值:
1 23
3 20
5 55
3 20
9 77
3 20
'1': '23', '5': '55', '9': '77' test1
'3': '20', '7': '20', '11': '20' test2
脚本的需求是两个字典的value值对应比较大小,并输出是哪两个值做的比较。很明显test1的值都大于test2的值,我想根据值返回对应的keys。但是value值不唯一,匹配到第一个值就都返回了第一个值的keys(如上图)
正确的应该返回为:
1 23
3 20
5 55
7 20
9 77
11 20
如果用 print([k for k, v in test1.items() if v == value1], value1)这种方式他就返回了所有keys
如:
['1'] 23
['3', '7', '11'] 20
['5'] 55
['3', '7', '11'] 20
['9'] 77
['3', '7', '11'] 20
请大佬们支个高招啊

参考技术A 中间那3行改成
if value1 > value2:
print(keys1[i], value1)
print(keys2[i], value2)

python:字典的方法

1.查找字典中的key对应的值和key是否存在(get,has_key)
dict.get(key, default = None) :返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
dict.has_key(key) 如果key在字典中,返回True,否则返回False

2.查看字典中所有的key,value(keys,values,items,iterkeys,itervalues,iteritems)
dict.keys() 返回一个包含字典所有KEY的列表;
dict.values() 返回一个包含字典所有value的列表;
dict.items() 返回一个包含所有(键,值)元祖的列表;
dict.iteritems()、adict.iterkeys()、adict.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表

3.添加,更新,删除元素:
a、添加一个数据项(新元素)或键值对
adict[new_key] = value 形式添加一个项
b、更新一个数据项(元素)或键值对
adict[old_key] = new_value
c、删除一个数据项(元素)或键值对
del adict[key] 删除键key的项 / del adict 删除整个字典
adict.pop(key) 删除键key的项并返回key对应的 value值














以上是关于python字典如何根据value返回对应的keys?value值不唯一的主要内容,如果未能解决你的问题,请参考以下文章

Python字典如何根据值返回键

python 利用字典,根据要求的key值条件匹配对应value

python 如何循环读取字典中的keys所对应的values

python字典如何根据key比较value?

Python 如果两个字典key值相同,如何提取对应values组成新的字典

python:字典的方法